C# 在特定URL上触发HttpHandler

C# 在特定URL上触发HttpHandler,c#,asp.net,httphandler,C#,Asp.net,Httphandler,我制作了一个HttpHandler,我想在浏览器从特定URL请求某些内容时运行它 我试着这样注册它: <system.webServer> <handlers> <clear /> <add name="png" verb="GET,HEAD" path="*.png" type="MyProject.HttpHandler" /> <add name="jpg" verb="GET,HEAD" path=

我制作了一个HttpHandler,我想在浏览器从特定URL请求某些内容时运行它

我试着这样注册它:

<system.webServer>
  <handlers>
    <clear />
      <add name="png" verb="GET,HEAD" path="*.png" type="MyProject.HttpHandler" />
      <add name="jpg" verb="GET,HEAD" path="*.jpg" type="MyProject.HttpHandler" />
      <add name="jpeg" verb="GET,HEAD" path="*.jpeg" type="MyProject.HttpHandler" />
      <add name="gif" verb="GET,HEAD" path="*.gif" type="MyProject.HttpHandler" />
  </handlers>
<system.webServer>
这适用于所有的URL,除了那些我需要它的工作。我要处理的请求是当浏览器请求图像时。看起来是这样的:

<system.webServer>
  <handlers>
    <clear />
      <add name="png" verb="GET,HEAD" path="*.png" type="MyProject.HttpHandler" />
      <add name="jpg" verb="GET,HEAD" path="*.jpg" type="MyProject.HttpHandler" />
      <add name="jpeg" verb="GET,HEAD" path="*.jpeg" type="MyProject.HttpHandler" />
      <add name="gif" verb="GET,HEAD" path="*.gif" type="MyProject.HttpHandler" />
  </handlers>
<system.webServer>
http://example.net/contentassets/some_image_name.jpg?maybe=someParameters

出于某种原因,HttpHandler没有接收这些数据。 基本上我想在请求上使用HttpHandler来http://example.net/contentassets/... 因此,它们仅在contentassets位于URL中时触发。有人知道怎么做吗

编辑:处理程序是否忽略查询字符串


EDIT2:我们使用EPiServer作为CMS,因此图像是从EPiServer blob存储中获取的。存储在项目文件夹中。这可能就是问题所在。

路径元素似乎是一个掩码,您是否尝试过:

<add name="png" verb="GET,HEAD" path="*/contentassets/*.png" type="MyProject.HttpHandler" />

所以,我明白了。EPiServer有自己的处理程序来处理BLOB存储中的IContent,例如图像。可以为特定的IContent类型创建自己的处理程序,覆盖ePiServer的默认实现

下面是ContentMediaHttpHandler的实现,但设置为仅在IContentImages图像上触发


那没用。我们使用EPiServer作为CMS,因此图像是从EPiServers blob存储中获取的。存储是项目文件夹中的一个文件夹。这可能是问题所在。我不知道EPiServer,但即使使用标准的IIS/IISExpress,这些类型的文件也直接由静态筛选器提供,因此处理程序没有机会在更改模块和配置的情况下获取这些请求。我将上面的配置添加到web.config中,它会截取其他人可能会发送到静态文件处理程序的请求,这实际上取决于服务器版本和配置方式。在IIS/IISExpress的最新版本中,我指的是静态的,我指的是它们甚至没有到达.NET层,它们由IIS本身提供服务,但仍然可以使用.config文件进行配置。这是为了获得最佳性能。如果您计划在各种实际配置中使用处理程序,这一点很重要。谢谢,我会记住这一点。