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

Preprocess png images before sending response

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

并且我们有匹配此特定路线的操作

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

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

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

/Content/image1.png

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

问题是我们如何让 iis 忽略 png 并将其作为路由而不是静态内容处理

我在 web.config 试过这个,但运气不好:

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

    </staticContent>
  </system.webServer>

好的。找到了解决方案。您需要添加

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

找到here