【问题标题】:Allow IIS serving selected static files through ASP.NET pipeline允许 IIS 通过 ASP.NET 管道提供选定的静态文件
【发布时间】:2014-08-06 08:40:32
【问题描述】:

在我的项目中,我们根据请求的域更改一张图片。当然我们可以提供不同的文件(css、js、html),但更简单的是处理这个文件并为用户提供正确的文件(我们称之为logo.ico

在 web.config 中,我们设置了 <modules runAllManagedModulesForAllRequests="false">,这导致 IIS 为我们提供所有静态文件。

有没有办法为 `logo.ico' 文件添加例外?

举例说明:当浏览器请求http://mydomian.com/logo.ico 时,我想运行自定义处理程序。对于所有其他文件,我想使用 IIS 原生解决方案(这意味着 <modules runAllManagedModulesForAllRequests="false">

【问题讨论】:

  • 嗨@Piotr,如果您使用的是MVC,那么您可以为logo.ico 添加路由并重新路由到特定控制器。

标签: asp.net-mvc iis


【解决方案1】:

没有办法只为一个文件添加异常,但您可以使用 ashx 处理程序提供该图像,例如 url 应该看起来像(添加您自己的逻辑以选择图像)

http://mydomian.com/ServeImage.ashx?image=logo.ico

然后只为该域提供图标:

  public class ServeImage : IHttpHandler
  {

    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "image/x-icon";
      using (var fs = new FileStream(context.Server.MapPath("~/App_Data/logo.ico"), FileMode.Open))
      {
        fs.CopyTo(context.Response.OutputStream);
      }      
    }


    public bool IsReusable
    {
      get
      {
        return false;
      }
    }
  }

【讨论】:

    最近更新 更多