0

我有一个 IRouteHander 类,我用它来动态调整图像大小并向它们添加过期标题,最近我搬到了 MVC5 并现在更新我的代码。我试图在 RouteConfig.cs 中为该类注册相同的路由

routes.Add(new Route("Image/{w}/{h}/{src}", new ThumbImageRouteHandler()));

但是这条路线不再像在 MVC3 上那样工作,并且在 MVC5 中给出 404 错误。我在这里有什么遗漏吗?这条路线通向

public class ThumbImageRouteHandler : IRouteHandler
{
         public IHttpHandler GetHttpHandler(RequestContext requestContext)
            {
                HttpHanler httpHandler = new HttpHanler();
                return httpHandler;
            }
            public class HttpHanler : IHttpHandler
            {
                public bool IsReusable
                {
                    get
                    {
                        return false;
                    }
                }
                public void ProcessRequest(HttpContext context)
                {
                //Do something
                }
               }
           }
}

请帮我解决这个问题。谢谢

4

1 回答 1

1

经过研究,我发现我需要在 webconfig 中添加一行才能使其正常工作,方法如下。

  <system.webServer>
    <handlers>
      <add name="ApiURIs-ISAPI-Integrated-4.0-Image" path="/Image/*" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

因为 IRouteHandler 正在使用动态路径生成重新调整大小的图像,并且 IIS 认为这是指向目录的实际路径,因为链接中的 dot(.) 并且它认为它是一个扩展,实际上不是。所以我们必须在 Web.Config 中添加一个处理程序才能使其工作。

于 2015-07-03T02:38:12.493 回答