我有一个 MVC4 网站在 dev 上运行良好。尝试发布到生产路由时不起作用。我唯一的规则是默认规则:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "General", action = "Index", id = UrlParameter.Optional }
);
但是,在生产服务器(IIS7.5 - 就像 dev)上,以下任何一项在 404 上都会失败:
<domain>/Home
<domain>/Home/Index
普通<domain>/
在 403 上失败。
注意:所有这些都在使用路由调试器时
在玩耍时,我偶然发现了以下好奇心:
<domain>/Home/Index.cshtml/3
居然把我带到了路由调试页面,声称匹配上
controller Home
action Index.cshtml
id 61
更多的播放表明“.cshtml”在哪里并不重要,只要它在那里就可以工作。例如<domain>/.cshtml/Index/4
匹配
controller .cshtml
action Index
id 4
为什么它需要一个“.cshtml”字符串,我能做些什么呢?