在发送响应之前预处理png图像

时间:2017-07-10 13:39:24

标签: asp.net asp.net-mvc web-config

假设我们有MVC应用程序和图像位于:/Images/image1.png

我们有与此特定路线相匹配的行动

[Route("Content/{filename}")]
public ActionResult GetImage(string filename)
{
   // Process image (add watermark etc..)
}

目标是在将png文件发送到浏览器之前对其进行处理。

当我们尝试访问此操作时会出现问题:

  

/Content/image1.png

它返回404因为.png扩展名被处理为静态内容所以它认为我试图从该位置加载图像。另一方面,如果我们在文件名之后添加斜杠:/Content/image1.png/它可以正常工作

问题是如何使iis忽略png并将其作为路径而不是静态内容处理

我在web.config中尝试了这个但没有运气:

<system.webServer>
    <staticContent>
      <remove fileExtension=".png" />

    </staticContent>
  </system.webServer>

1 个答案:

答案 0 :(得分:0)

确定。找到了解决方案。你需要添加

<handlers>
  <add name="PngFileHandler" path="*.png" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

找到here