Sharepoint 2010不会调用我的自定义HttpHandler的ProcessRequest

时间:2012-04-19 16:12:11

标签: c# sharepoint iis-7.5 httphandler

嗯,我知道应该调用它的是IIS。无论如何;我有一个Sharepoint解决方案,当在文档库上单击具有特定扩展名的文件时,它应该返回一个特殊的字符串。

在相应的web.config文件中,我有以下内容来运行此HTTP处理程序:

<system.webServer>
   <handlers>
       ...
       <add name="MyFileHandler" path="*.bar" verb="*" type="Foo.Example.MyHandler, Foo.Example, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3b53a24010893ac2" resourceType="File" />
       ...
    </handlers>
</system.webServer>

HttpHandler类是这样的:

namespace Foo.Example
{
    public class MyHandler : IHttpHandler
        {   
            public MyHandler(){} //For breakpoint

            public void ProcessRequest(HttpContext context)
            {
                //Do stuff and write to response.
            }

            public bool IsReusable
            {
                get { return false; }
            }
       }
}

当我尝试在Sharepoint上打开一个带有'.bar'扩展名的文件时,它返回404.我在ProcessRequest中所做的事情是不相关的,因为当我调试处理程序时,我可以看到处理程序的构造函数被调用但不是'的ProcessRequest'。除了调试器,我还放了调试行(File.AppendAll),再次只根据调试输出调用构造函数。

IIS 7.5.7600

Sharepoint 2010 Foundation

2 个答案:

答案 0 :(得分:1)

结果

  

= resourceType为 “文件”

web.config中的handler标签上的

是问题所在。删除它或将其设置为“未指定”。

已经提到here,遗憾的是,我之前没有发现过。{/ p>

答案 1 :(得分:0)

我唯一能想到的是尝试将处理程序移动到第一个处理程序。

否则,实际上与SharePoint集成可能会更好,而不是试图覆盖其行为。在这种情况下,您可能应该针对您想要实现的目标发布单独的问题。