我遇到了类似的问题:Using ASP.NET routing to serve static files
在RouteConfig中,我添加了以下几行:
routes.Add( “图像ABC”,新路线(“Images / abc / {* filename}”,新ImageRouteHandler(“abc”)));
routes.Add( “图像XYZ”,新路线(“Images / xyz / {* filename}”,新ImageRouteHandler(“xyz”)));
我在ImageRouteHandler
发现了一个相当不错的实现:http://www.phpvs.net/2009/08/06/aspnet-mvc-how-to-route-to-images-or-other-file-types/,我只是在ctor中添加了一个参数来构建物理路径......
约束:除了ABC或XYZ之外,我在Images
中还有其他路径,我不想被路由。
注意:我使用的是{*filename}
,因此我可以参考多个细分...详情请见http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx#handling_a_variable_number_of_segments_in_a_url_pattern
问题:
我可以在1个单一语句中将这两个路由组合而不用
违反约束?也许使用一些正则表达式
例如Images/[abc|xyz]/...
这个职位很重要。低于或高于默认路由。
routes.MapRoute( 名称:“默认”, url:“{controller} / {action} / {id}”, 默认值:new {controller =“Home”,action =“Index”,id = UrlParameter.Optional} );
a)如果代码位于默认路由之上,则会陷入困境 RedirectToAction
b)如果代码位于默认路由下方,则不会
处理即时路由,例如Images/abc/img.jpg
不会
已处理,但Images/abc/level1/level2/level3/img.jpg
将会
处理
为什么呢?不知道。
答案 0 :(得分:0)
修正:
IRouteConstraint
。这将是两件事......只接受IncomingRequest
,并检查文件夹是否为abc或xyz。资料来源:After add MapPageRoute to an asp.net mvc project, the site stops to enter in Home Controller routes.Add(“Images Specials”,new Route(“Images / {folder} / {* filename}”,null,new RouteValueDictionary {{“outgoing”,new ImageRouteConstraint()}},new ImageRouteHandler()) );