让我好奇的是,当我在中运行ASP.NET应用程序时,通用处理程序工作得很好。当我更改配置以直接从IIS运行它时,处理程序就会死掉。
它是一个图像处理程序,它写回要在image对象中呈现的字节数组。正如我所说,它在VS Development中运行良好,但在IIS上失败。甚至连电话都没有..。
当我试图直接调用它时,我遇到的错误是:
解析器错误描述:在解析服务此请求所需的资源时发生错误。请查看以下具体的解析错误详细信息,并适当地修改源文件。解析器错误信息:无法创建'YourImageHandler‘类型。源错误:第1行:<%@ WebHandler Language="C#“CodeBehind="YourImagehandler.ashx.cs”Class="YourImageHandler“%>
Web.config上的处理程序:
<system.web>
<httpHandlers>
<add verb="*" path="*.ashx" type="YourImageHandler"/>
</httpHandlers>
</system.web> 泛型处理程序位于Web项目的同一个程序集中,整个过程都在IIS 7上运行。
发布于 2011-10-26 19:41:19
如果您在管道模式下使用IIS 7,则处理程序定义必须处于中,如下所示:
<system.webServer>
<handlers>
<add name="YourImageHandlerName" path="*.ashx" verb="*" type="YourImageHandler" />
</handlers>
</system.webServer>IIS7.0有两种管道模式:集成模式和经典模式。后者有时被称为ISAPI模式。 集成模式允许托管模块和本机模块注册IIS管道中的事件。这允许许多新的方案,例如将ASP.NET窗体身份验证应用于非ASP.NET请求(静态文件、经典ASP文件等)。 经典模式与IIS6.0完全相同。在经典模式下,ASP.NET管道(BeginRequest,AuthenticateRequest,…),EndRequest)完全在IIS管道的EXECUTE_REQUEST_HANDLER事件中运行。将经典模式下的ASP.NET想象为管道中的管道。
另一种选择是以“经典”模式运行您的站点,在经典模式下IIS 7的工作方式类似于IIS 6,并且具有与Cassini web服务器相同的行为(在这里非常重要)。
希望能帮上忙。
发布于 2016-06-02 06:27:35
您必须在preCondition文件中添加web.config属性
<add name="HandlerName" verb="*" path="Handlers/HandlerName.ashx" type="Namespace/HandlerClassName, MyAssembly, Version=1.0.*, Culture=neutral" preCondition="classicMode,runtimeVersionv4.6.1"/>它正在弥补我的错误。
发布于 2011-10-26 19:14:11
我认为您应该将托管处理程序映射添加到IIS。仅仅添加配置是不够的。你看上去像这里。
https://stackoverflow.com/questions/7906344
复制相似问题