ASP.NET MVC4 “想要”我的自定义路由的尾部斜杠
本文关键字:路由 尾部 自定义 我的 MVC4 NET 想要 ASP | 更新日期: 2023-09-27 18:34:00
我的 ASP.NET MVC应用程序中有以下路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "AppCode",
url: "AppCode",
defaults: new { controller = "AppToken", action = "AuthenticateUser", authCode = UrlParameter.Optional }
);
routes.MapRoute(
name: "ReplayFileRoute",
url: "Replays/{replayName}/{fileName}",
defaults: new { controller = "Replay", action = "GetReplayFile" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
现在的问题是,以下 URL 将导致 404 和"GetReplayFile"操作无法执行:
http://localhost:59174/Replays/kgm3eauw.zbg/raha5qit.ikp.pls
但是,以下 URL 有效:
http://localhost:59174/Replays/kgm3eauw.zbg/raha5qit.ikp.pls/
因此,当我添加尾部斜杠时,ASP 会选择正确的路由,否则不会。 目前无法选择添加尾尾斜杠,因为 URL 将由外部脚本生成。我只通过
http://localhost:59174/Replays/kgm3eauw.zbg/
对于脚本,实际文件名将由脚本生成 - 没有尾部斜杠。
所以我的问题是:如何使第一个URL调用"正确"方法?
另外:是否有任何关于 RouteConfig 如何工作的文档?到目前为止,我还没有找到太多。
我想
问题是期望您的URL指向文件并绕过 ASP.NET MVC路由引擎。您必须让所有请求都通过 ASP.NET,以便让它在看起来像文件的URL上匹配。
您可以在web.config
文件中设置此设置。添加这个:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>