C# 使用ASP.NET路由服务静态文件(第2部分)

C# 使用ASP.NET路由服务静态文件(第2部分),c#,asp.net,asp.net-mvc,routes,C#,Asp.net,Asp.net Mvc,Routes,我在这里遇到了类似的问题: 在RouteConfig中,我添加了以下行: 路线。添加( “图像ABC”、新路由(“图像/ABC/{*filename}”、新图像路由处理程序(“ABC”) 路线。添加( “Images XYZ”,新路由(“Images/XYZ/{*filename}”,新imagesroutehandler(“XYZ”) 我在这里找到了一个相当不错的ImageRouteHandler实现:,我只是在ctor中添加了一个参数来构建物理路径 约束:除了ABC或XYZ,我在图像中还有其

我在这里遇到了类似的问题:

在RouteConfig中,我添加了以下行:

路线。添加( “图像ABC”、新路由(“图像/ABC/{*filename}”、新图像路由处理程序(“ABC”)

路线。添加( “Images XYZ”,新路由(“Images/XYZ/{*filename}”,新imagesroutehandler(“XYZ”)

我在这里找到了一个相当不错的
ImageRouteHandler
实现:,我只是在ctor中添加了一个参数来构建物理路径

约束:除了ABC或XYZ,我在
图像
中还有其他我不想路由的路径

注意:我使用
{*filename}
以便可以引用多个段。。。更多信息请点击此处:

问题:

  • 我可以将这两条路由合并到一条语句中而不使用 违反约束?也许使用某种正则表达式 例如
    Images/[abc|xyz]/…

  • 位置很重要。低于或高于默认路由

    routes.MapRoute( 名称:“默认”, url:“{controller}/{action}/{id}”, 默认值:新建{controller=“Home”,action=“Index”,id=UrlParameter.Optional} );

    • a) 如果代码放在默认路由的上方,它将搞乱 重定向操作

    • b) 如果代码被放置在默认路由之下,则不会 处理即时路由,例如,
      Images/abc/img.jpg
      不会 已处理,但将处理
      Images/abc/level1/level2/level3/img.jpg
      处理

  • 为什么??不知道。

    修复者:

    • 添加
      iroute约束
      。那将有两件事。。。仅接受收入请求,并检查文件夹是abc还是xyz。资料来源:
    • 在默认路由的上面添加以下代码
    添加(“图像特殊”、新路由(“图像/{folder}/{*filename}”、null、新RouteValueDictionary{{“outgoing”、新ImageRouteConstraint()}}、新ImageRouteHandler()) );

    • 使用
      ImageHandler
      使外观更好。 资料来源:,和