IRouteHandler未通过RouteConfig进行路由
本文关键字:路由 RouteConfig IRouteHandler | 更新日期: 2023-09-27 18:00:51
我有一个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
}
}
}
}
请帮我解决这个问题。感谢
经过研究,我发现我需要在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认为这是指向目录的实际路径,因为链接中有点(.(,它认为这是一个扩展,但事实并非如此。因此,我们必须在Web.Config中添加一个处理程序才能使其工作。