HttpHandler问题求助未能加载类型“XXXHandler”。

xyz254 2011-09-25 08:57:35
我定义了一个CoverHandler.ashx,用来给图片加水印
然后在web.config中添加
<httpHandlers>
<add verb="*" path="Images/BookCovers/*.jpg" type="CoverHandler"/>
</httpHandlers>

结果页面运行时报未能加载类型“CoverHandler”。

哪里写错了?该如何处理~

先谢谢各位了~
...全文
354 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyz254 2011-09-26
  • 打赏
  • 举报
回复
谢谢孟兄以及各位,问题解决了
解决方法就是孟兄12楼说的
但配置写在
<system.webServer>节点下貌似不行
后来又改回写到
<system.web>
<httpHandlers>
<add verb="*" path="Images/BookCovers/*.jpg" type="CoverHandler"/>
</httpHandlers>
</system.web>
中就搞定了~

结贴~~
xyz254 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 net_lover 的回复:]
正确的做法

添加新项-类:
CoverHandler.cs

文件放在app_code下面,内容是

using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

public class CoverHandler : IHtt……
[/Quote]

好的,我再试试~
xyz254 2011-09-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 net_lover 的回复:]

代码没错,如果是vs2010,你需要写在system.webServer>
节点下
<system.webServer>
<handlers>
<add name="x" verb="*" path="Images/BookCovers/*.jpg" type="CoverHandler"/>
</handlers>
</system.webSer……
[/Quote]

谢谢~
按照这样写后,不报错了,但水印效果没出来
是不是还有哪里的配置没到位?
孟子E章 2011-09-26
  • 打赏
  • 举报
回复
正确的做法

添加新项-类:
CoverHandler.cs

文件放在app_code下面,内容是

using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

public class CoverHandler : IHttpHandler
{
private const string WATERMAEK_URL = "~/Images/watermark.jpg";

public void ProcessRequest(HttpContext context)
{
string path = context.Request.PhysicalPath;
Image Cover;
if (File.Exists(path))
{
Cover = Image.FromFile(path);
Image watermark = Image.FromFile(context.Request.MapPath(WATERMAEK_URL));

Graphics g = Graphics.FromImage(Cover);
g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
g.Dispose();
watermark.Dispose();
}
else
Cover = Image.FromFile(path);
context.Response.ContentType = "image/jpeg";
Cover.Save(context.Response.OutputStream, ImageFormat.Jpeg);
Cover.Dispose();
context.Response.End();
}

public bool IsReusable {
get {
return false;
}
}

}

也就是去掉
<%@ WebHandler Language="C#" Class="CoverHandler" %>
这行,就可以引用了

你写成CoverHandler.ashx,是供页面直接访问使用的,也就是常用的ajax发送请求的页面。http://xxxx/CoverHandler.ashx
这种方式访问的,

而写成类,就可以进行注册了
孟子E章 2011-09-25
  • 打赏
  • 举报
回复
代码没错,如果是vs2010,你需要写在system.webServer>
节点下
<system.webServer>
<handlers>
<add name="x" verb="*" path="Images/BookCovers/*.jpg" type="CoverHandler"/>
</handlers>
</system.webServer>
xyz254 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dongxinxi 的回复:]

你的是webapplication还是网站项目啊
[/Quote]
网站
  • 打赏
  • 举报
回复
你的是webapplication还是网站项目啊
xyz254 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 net_lover 的回复:]

CoverHandler有名称空间名字吗?
CoverHandler编译成功了吗
[/Quote]

没给名称空间
编译成功了
孟子E章 2011-09-25
  • 打赏
  • 举报
回复
CoverHandler有名称空间名字吗?
CoverHandler编译成功了吗
xyz254 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qingyun1029 的回复:]

好像忘记写name属性了。
[/Quote]

没看到有name属性啊。求详解~~
qingYun1029 2011-09-25
  • 打赏
  • 举报
回复
好像忘记写name属性了。
xyz254 2011-09-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 net_lover 的回复:]

应该没问题啊。看看CoverHandler是否存在拼写错误?
[/Quote]
CoverHandler.ashx代码如下,帮忙看看有问题没。。。。
<%@ WebHandler Language="C#" Class="CoverHandler" %>

using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

public class CoverHandler : IHttpHandler
{
private const string WATERMAEK_URL = "~/Images/watermark.jpg";

public void ProcessRequest(HttpContext context)
{
string path = context.Request.PhysicalPath;
Image Cover;
if (File.Exists(path))
{
Cover = Image.FromFile(path);
Image watermark = Image.FromFile(context.Request.MapPath(WATERMAEK_URL));

Graphics g = Graphics.FromImage(Cover);
g.DrawImage(watermark, new Rectangle(Cover.Width - watermark.Width, Cover.Height - watermark.Height, watermark.Width, watermark.Height), 0, 0, watermark.Width, watermark.Height, GraphicsUnit.Pixel);
g.Dispose();
watermark.Dispose();
}
else
Cover = Image.FromFile(path);
context.Response.ContentType = "image/jpeg";
Cover.Save(context.Response.OutputStream, ImageFormat.Jpeg);
Cover.Dispose();
context.Response.End();
}

public bool IsReusable {
get {
return false;
}
}

}


明天中午结贴~谢谢各位~
孟子E章 2011-09-25
  • 打赏
  • 举报
回复
应该没问题啊。看看CoverHandler是否存在拼写错误?
xyz254 2011-09-25
  • 打赏
  • 举报
回复
up~

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧