通用处理程序不在IIS上工作

Smu*_*mur 1 .net c# asp.net httphandler handler

令我好奇的是,当我在Visual Studio ASP.NET开发服务器中运行Web应用程序时,通用处理程序工作得很好.当我更改配置以直接从IIS运行它时,处理程序就会死掉.

我真的不是这方面的专家,所以对我很不满意.

它是一个图像处理程序,它会写回要在Image对象中呈现的字节数组.正如我所说,它在VS Development Server中运行良好,但在IIS上失败.它甚至没有被称为......

我试图直接调用它时得到的错误是:

分析程序错误说明:解析为此请求提供服务所需的资源时发生错误.请查看以下特定的解析错误详细信息并相应地修改源文件.分析器错误消息:无法创建类型'YourImageHandler'.源错误:第1行:<%@ WebHandler语言="C#"CodeBehind ="YourImagehandler.ashx.cs"Class ="YourImageHandler"%>

有任何想法吗?

编辑:

更多信息:

web.config上的处理程序:

<system.web>
    <httpHandlers>
      <add verb="*" path="*.ashx"  type="YourImageHandler"/>
    </httpHandlers>
</system.web> 
Run Code Online (Sandbox Code Playgroud)

Generic Handler与Web项目位于同一个程序集中,整个过程在IIS 7上运行.

Voi*_*ain 8

如果在管道模式下使用IIS 7,则处理程序定义必须位于<System.webServer>中,如下所示:

<system.webServer>
<handlers>
    <add name="YourImageHandlerName" path="*.ashx" verb="*" type="YourImageHandler" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

点击此处:http://blogs.msdn.com/b/tmarq/archive/2007/08/30/iis-7-0-asp-net-pipelines-modules-handlers-and-preconditions.aspx

IIS 7.0有两种管道模式:集成模式和经典模式.后者有时被称为ISAPI模式.

集成模式允许托管和本机模块注册IIS管道中的事件.这可以实现许多新方案,例如将ASP.NET表单身份验证应用于nonasp.net请求(静态文件,传统ASP文件等).

经典模式与IIS 6.0相同.在经典模式下,ASP.NET管道(BeginRequest,AuthenticateRequest,...,EndRequest)完全在IIS管道的EXECUTE_REQUEST_HANDLER事件中运行.将经典模式下的ASP.NET视为管道中的管道.

另一种选择是以"经典"模式运行您的站点,在经典模式下,IIS 7的工作方式与IIS 6类似,并且与Cassini Web服务器具有相同的行为(对于此处的重要性).

希望有所帮助.