IRouteHandler 不通过 RouteConfig 进行路由
IRouteHandler not routing through RouteConfig
我有一个 IRouteHander class,我用它来动态调整图像大小并向它们添加过期 headers,最近我搬到了 MVC5,现在正在更新我的代码。我试图在 RouteConfig.cs
中为 class 注册相同的路线
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 认为这是目录的实际路径,因为 link 中的点 (.) 并且它认为它是一个扩展,这其实不是。所以我们必须在 Web.Config 中添加一个处理程序才能使其工作。
我有一个 IRouteHander class,我用它来动态调整图像大小并向它们添加过期 headers,最近我搬到了 MVC5,现在正在更新我的代码。我试图在 RouteConfig.cs
中为 class 注册相同的路线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 认为这是目录的实际路径,因为 link 中的点 (.) 并且它认为它是一个扩展,这其实不是。所以我们必须在 Web.Config 中添加一个处理程序才能使其工作。