2

我正在尝试使用 http hadler,所以我创建了一个类库项目并添加了以下代码:

 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 或类似的东西?)

4

1 回答 1

0

由于某种原因,当它位于处理程序列表的末尾时,它没有被调用。我移到顶部并收到关于 webresources.axd 的奇怪错误。原因是路径 =“*”。我找不到匹配的路径,因为我正在使用路由。

最后我发现我使用了错误的工具:模块对我来说是正确的,而不是处理程序,因为我想根据情况在我的输出中添加一些东西。所以我改变了使用模块的方法,现在看起来不错。感谢所有帮助我发表评论的人!

于 2013-01-07T17:31:45.133 回答