我正在尝试使用http hadler,所以我创建了一个类lirary项目并添加了这段代码:
namespace MyProject.Handlers
{
public class Class1 : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.Write("Hello from custom handler.");
}
}
}
然后我编译了它,它生成了MyProject.Handlers.dll文件。我把它放在我的asp.net bin文件夹中并将其添加到asp.net
<system.webServer>
<handlers>
<add name="TutorialHandler" verb="*" path="*" type="MyProject.Handlers.Class1, MyProject.Handlers" modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="File" />
</handlers>
<modules runAllManagedModulesForAllRequests="true">
//some stuff I *think* it doesn't make a difference
</modules>
//some stuff I *think* it doesn't make a difference
</system.webServer>
和
<system.web>
<httpHandlers>
<add verb="*" path="*" type="MyProject.Handlers.Class1, MyProject.Handlers" />
</httpHandlers>
</system.web>
但它没有被召唤! 我启动调试器,设置断点,但它不会停止。如果我在firebug中检查输出html,则句子“Hello from custom handler”不存在。
我做错了什么?
谢谢, 奥斯卡
编辑:我正在使用框架4.0,IIS7。 可能是我在使用路线吗? (不是直接调用index.aspx,而是/ home或类似的东西?)答案 0 :(得分:0)
由于某种原因,它在处理程序列表末尾时没有被调用。我移动到顶部,并得到一个关于webresources.axd的奇怪错误。共振是路径=“*”。 我找不到匹配的路径,因为我正在使用路线。
最后我发现我使用的是错误的工具:模块对我来说是正确的,而不是处理程序,因为我想根据具体情况在输出中添加内容。所以我改变了使用模块的方法,现在看起来很好。 感谢所有帮助我发表评论的人!