【问题标题】:how to set a handler in web.config with IIS7?如何使用 IIS7 在 web.config 中设置处理程序?
【发布时间】:2012-01-07 12:02:15
【问题描述】:

我有一个处理程序,在运行时它会在特定文件夹中的图像上创建一个水印。问题是它起作用了,但现在不起作用了。

我所做的只是改变了主机。

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

<handler>
 <add verb="*" name="ImageWatermarkHandler" type="ImageWatermarkHandler" 
      path="Pics/*.jpg,Pics/*.png"  modules="IsapiModule"
      scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" 
      resourceType="Unspecified" preCondition="integratedMode" />
</handler>

你能帮帮我吗?

【问题讨论】:

  • 托管服务提供商可能已锁定自定义处理程序的使用?请咨询您的提供商。
  • 我认为元素应该是&lt;handlers&gt;,而不是&lt;handler&gt;

标签: asp.net


【解决方案1】:

在 IIS 7 下,您必须在 web.config 的 configuration/system.webServer/handlers 元素下指定自定义 http 处理程序和模块(与旧 IIS 版本不同,其中元素为 configuration/system.web/httpHandlers)。

集成模式(您只需要处理程序部分)和经典模式(您需要处理程序和 httpHandlers)之间存在区别。详情见MSDN entry

编辑:一开始我并没有注意到集成模式的前提条件,会不会是新主机在经典模式下运行你的应用?

【讨论】:

  • 我在 web.config 中的 configuration/system.webServer/handlers 和 configuration/system.web/httpHandlers 中声明了,但它仍然不起作用。
【解决方案2】:

你的配置文件应该是这样的,

<configuration>
  <system.web>
    <httpHandlers>
      <add verb="*" path="Pics/*.jpg,Pics/*.png" type="ImageWatermarkHandler"/>
    </httpHandlers>
  </system.web>
  <system.webServer>
    <handlers>
      <add verb="*" path="Pics/*.jpg,Pics/*.png" name="ImageWatermarkHandler" type="ImageWatermarkHandler"/>
    </handlers>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>
</configuration>

如需更多信息, http://msdn.microsoft.com/en-us/library/bb515343.aspx

【讨论】:

  • @Coderock.net,试试这个link
  • 嗨,我想我找到了问题所在。我不能在 path="Pics/*.jpg,Pics/*.png" 中只有 path="Pics/*.jpg"。现在我有另一个问题,我看不到图片中的图像,就像我没有权利看到它们一样。你能帮帮我吗?
  • 由于您为图像映射了处理程序,因此您无法通过浏览器查看图像。您的处理程序应该读取图像并将其提供给浏览器。请参阅此示例,cmsnsoftware.blogspot.com/2011/09/…
  • 需要注意的是,在 IIS6 中只能使用逗号分隔的路径,在 IIS7 中,每个路径必须使用多个处理程序。
猜你喜欢
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 2022-02-02
  • 2014-10-23
  • 1970-01-01
  • 2011-02-15
  • 2011-07-31
相关资源
最近更新 更多