用于提供图像的控制器不适用于扩展

时间:2014-12-14 12:06:42

标签: asp.net-mvc routing asp.net-mvc-routing

我想使用ImageController提供我的图片:

public class ImageController : Controller
{
    // GET: Image
    public ActionResult Render(string fileName)
    {
        byte[] image = System.IO.File.ReadAllBytes(/*some path*/);
        return this.Image(image, "image/png");
    }
}

我添加了路线:

routes.MapRoute(
    name: "Images",
    url: "images/{action}/{fileName}",
    defaults: new { controller = "Image", action = "Render", fileName = UrlParameter.Optional }
);

所以这个图像路径有效: http://xxx.xxx/images/render/x

但是这个扩展名的路径并不是: http://xxx.xxx/images/render/x .PNG

A" HTTP错误404.0 - 未找到"出现错误。

我该怎么做才能启用文件扩展名?

1 个答案:

答案 0 :(得分:0)

请尝试以下步骤:

  1. 在RouteConfig.cs

    中启用自定义文件路由
    routes.RouteExistingFiles = true;
  2. 在web.config中添加以下处理程序

  3. <system.webServer>
      <handlers>
        <add name="ProtectedImages" path="images/*" verb="GET" type="System.Web.Handlers.TransferRequestHandler"   preCondition="integratedMode,runtimeVersionv4.0" />
      </handlers>
    </system.webServer>