【问题标题】:Parse error with Generic Handler using IIS使用 IIS 使用通用处理程序解析错误
【发布时间】:2019-09-22 21:16:32
【问题描述】:

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

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

我尝试直接调用它时遇到的错误是:

解析器错误描述:在解析一个 服务此请求所需的资源。请查看以下内容 特定的解析错误详细信息并修改您的源文件 适当地。解析器错误消息:无法创建类型 '你的图像处理程序'。源错误:第 1 行:

web.config 上的处理程序:

<system.web>
    <httpHandlers>
      <add verb="*" path="*.ashx"  type="YourImageHandler"/>
    </httpHandlers>
</system.web> 

通用处理程序在 Web 项目的同一个程序集中,并且整个程序都在 IIS 7 上运行。

【问题讨论】:

  • 您的处理程序位于哪个程序集中?这个程序集与 asp.net web 项目本身有什么不同吗?
  • 你的处理程序是如何在 web.config 中映射的?是在<system.web>里面吗?还是在<system.webServer>里面?您使用的是哪个版本的 IIS?
  • @KirkWoll 回答了这个问题。
  • @VoidMain 回答了这个问题。
  • 检查您网站的应用程序池 .net 版本是否与您的 Web 项目 .net 版本相同

标签: c# asp.net .net handler httphandler


【解决方案1】:

如果您在管道模式下使用 IIS 7,则处理程序定义必须 中 像这样:

<system.webServer>
<handlers>
    <add name="YourImageHandlerName" path="*.ashx" verb="*" type="YourImageHandler" />
</handlers>
</system.webServer>

在这里查看: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 表单身份验证应用于非 asp.net 请求(静态 文件、经典 ASP 文件等)。

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

另一种选择是在“经典”模式下运行您的网站,在经典模式下,IIS 7 的工作方式与 IIS 6 类似,并且与您的 Cassini Web 服务器具有相同的行为(在此重要的是)。

希望有所帮助。

【讨论】:

  • 我明天测试一下。那为什么在Development Server下运行应用的时候能正常工作呢?
  • 它可以在您的开发服务器中使用(我假设您说的是 VS 附带的 Cassini 版本),因为它使用 IIS6 语法。
【解决方案2】:

你必须在 web.config 文件中添加 preCondition 属性

    <add name="HandlerName" verb="*" path="Handlers/HandlerName.ashx" type="Namespace/HandlerClassName, MyAssembly, Version=1.0.*, Culture=neutral" preCondition="classicMode,runtimeVersionv4.6.1"/>

它现在可以解决我的错误。

【讨论】:

    【解决方案3】:

    我认为您应该将托管处理程序映射添加到 IIS。添加配置是不够的。你可以看here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 2010-10-11
      • 2022-08-21
      • 1970-01-01
      • 2016-11-14
      • 2014-03-17
      相关资源
      最近更新 更多