Asp.net 如何在IIS7中为HttpHandler注册多个路径?

Asp.net 如何在IIS7中为HttpHandler注册多个路径?,asp.net,iis,iis-7,httphandler,Asp.net,Iis,Iis 7,Httphandler,我有一个HttpHandler,它根据查询字符串调整图像大小,因此请求如下内容: 将为您提供大小为320x240的图像 在IIS管理器中的Handler Mappings下,我将处理程序的路径映射为*.jpg、*.gif、*.bmp、*.png。但是,这不会激活处理程序。如果我将其更改为just*.jpg,则它可以工作 我的问题是,我是否必须创建4个单独的映射条目,每种图像类型一个,或者是否有某种方法可以在一个路径中组合多个扩展?只要更改name属性,就可以添加多个相同的处理程序。Daniel

我有一个HttpHandler,它根据查询字符串调整图像大小,因此请求如下内容:

将为您提供大小为320x240的图像

在IIS管理器中的
Handler Mappings
下,我将处理程序的路径映射为
*.jpg、*.gif、*.bmp、*.png
。但是,这不会激活处理程序。如果我将其更改为just
*.jpg
,则它可以工作


我的问题是,我是否必须创建4个单独的映射条目,每种图像类型一个,或者是否有某种方法可以在一个路径中组合多个扩展?

只要更改name属性,就可以添加多个相同的处理程序。

Daniel T的答案:

结果表明,IIS 7的处理程序映射不同于IIS 6的处理程序映射。在IIS 6中,您可以在
web.config
中这样映射处理程序:

<configuration>
  <system.web>
    <httpHandlers>
      <add verb="GET" path="*.jpg,*.gif,*.bmp,*.png" type="YourProject.ImageHandler" />
    </httpHandlers>
  </system.web>
</configuration>

它允许您使用多个以逗号分隔的路径。在IIS 7中,它位于不同的部分:

<configuration>
  <system.webServer>
    <handlers>
      <add name="ImageHandler for JPG" path="*.jpg" verb="GET" type="YourProject.ImageHandler" resourceType="File" />
      <add name="ImageHandler for GIF" path="*.gif" verb="GET" type="YourProject.ImageHandler" resourceType="File" />
      <add name="ImageHandler for BMP" path="*.bmp" verb="GET" type="YourProject.ImageHandler" resourceType="File" />
      <add name="ImageHandler for PNG" path="*.png" verb="GET" type="YourProject.ImageHandler" resourceType="File" />
    </handlers>
  </system.webServer>
</configuration>

它不支持多个路径,因此需要为每个路径映射处理程序


您可能必须在这两个位置映射它,因为Visual Studio的内部开发服务器使用IIS 6(或在兼容模式下运行的IIS 7),而生产服务器可能使用IIS 7

这就是我的答案,我从3.5&MVC2升级到了4.5.2&MVC3。我知道要将“路径”移到该部分,但直到现在我才意识到必须更改“路径”的用法,谢谢!在将一个5年的项目迁移到VS 2017并尝试在IISExpress中运行之后,我得到了追踪者确认存在的404个文件。这不是权限,也不是路径;这是因为缺少处理程序,您的回答澄清了这两种方法,最终帮助我看到了这一点。我怀疑在过去,处理程序是添加到服务器而不是站点/项目的。