web.config中的自定义http处理程序

时间:2018-01-23 11:52:28

标签: c# web-config httphandler

我和IIS网站只包含index.htmlweb.config。我想根据某些条件覆盖请求流程。因此,我找到了一个教程并通过创建一个新的类库来编写我的处理程序:

namespace skmHttpHandlers
{
    public class SimpleHandler : IHttpHandler
    {
        public void ProcessRequest (HttpContext context)
        {
            context.Response.Write ("<html><body><h1>Test</h1></body></html>");
        }

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

我构建了库并将skmHttpHandlers.dll复制到index.htmlweb.config所在的文件夹中。不幸的是,它找不到我的处理程序并显示错误:

无法加载文件或程序集“skmHttpHandlers”或其依赖项之一。系统找不到指定的文件。

我的web.config看起来像这样:

<configuration>
    <system.webServer>
        <handlers>          
            <add name="SimpleHandler" path="*" verb="*" 
            type="skmHttpHandlers.SimpleHandler, skmHttpHandlers" 
            resourceType="Unspecified" 
            requireAccess="Script" 
            preCondition="integratedMode" />
        </handlers>
    </system.webServer>
</configuration>

我做错了什么?

1 个答案:

答案 0 :(得分:0)

IIS在预定义的目录集中查找处理程序程序集。 Web应用程序本身的目录不在列表中,这就是您获取bin的原因。处理程序的suggested位置是应用程序根目录中的bin目录。因此,要解决此问题,请在web.config附近创建skmHttpHandlers.dll目录并在其中移动{{1}}程序集。

将来,当您遇到类似问题时,可以enable Fusion log获取有关查找程序集的详细信息:

enter image description here