如何通过ASP.NET路由路由图像?

Dan*_* T. 7 c# asp.net-routing url-routing

我想创建一个动态缩略图大小调整器,以便您可以使用以下URL来获取已调整大小的图像:

http://server/images/image.jpg?width=320&height=240
Run Code Online (Sandbox Code Playgroud)

我尝试设置这样的路线:

routes.MapRoute(null,
                "{filename}",
                new { controller = "Image", action = "Resize" });
Run Code Online (Sandbox Code Playgroud)

但是如果该文件存在于URL中,则ASP.NET将绕过路由并仅返回该文件.如何强制ASP.NET路由图像而不是返回磁盘上的内容?

Pau*_*erø 3

这就是 asp.net 路由的工作原理,没有解决办法...如果您想拦截现有文件的请求,则必须使用 Rewrite。

更新

看来我扣扳机的速度有点太快了。似乎有一个您可以设置的属性,它允许您甚至对现有文件强制执行路由。

RouteCollection.RouteExistingFiles 属性

http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.routeexistingfiles.aspx

获取或设置一个值,该值指示 ASP.NET 路由是否应处理与现有文件匹配的 URL。如果 ASP.NET 路由处理所有请求,甚至那些与现有文件匹配的请求,则为 True;否则为假。默认值为 false。