因此,我们有一个路由设置,该路由设置的末尾有一个通配符以捕获文件路径,该路由可能类似于:/ {browserName} / {browserVersion} / {locale} / {* packageName}当我们尝试如下路径时,就会出现问题:/FF/3/zh-CN/scripts/packages/6/super.js最终以packageName的形式传递给控制器的是:/scripts/packages/super.js使用路由测试器程序也会发生这种情况,因此我们完全不知道为什么会这样。如果将6替换为字符串,则可以正常工作,如果在6之前添加了另一个数字文件夹,则它确实会包含在内,因此如果最后一个文件夹是数字,则该数字似乎会掉落。有人知道为什么吗? 最佳答案 我在VS2008中创建了默认的asp.net mvc2项目,并更改了以下代码:在global.asax.cs中,我有以下代码:public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "test", // Route name "{browserName}/{browserVersion}/{locale}/{*packageName}", new { controller = "Test", action = "Index", browserName = "IE", browserVersion = "8", locale = "en-US" , packageName = UrlParameter.Optional } // Parameter defaults ); }接下来,我添加了一个TestController:public class TestController : Controller{ public ActionResult Index( string browserName, string browserVersion, string locale, string packageName) { return View(); }}和一个空的索引视图:<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 指数 索引为了方便起见,我在site.master中为您指定的网址添加了一个链接:<li><a href="/FF/3/en-US/scripts/packages/6/super.js">Test</a></li>接下来,我在TestController的Index操作中设置一个断点。当我将鼠标悬停在packageName参数上时,我看到“ scripts / packages / 6 / super.js”因此,我无法重现您的行为。您是否正在使用VS2008和MVC2或其他版本? 10-05 22:24