我在IIS 5.1下的“localhost / mvcapplication1”
下有环境应用程序路由配置类似于:
routes.MapRoute("mvc-default", "{controller}.mvc/{action}/{id}"
, new { controller = "Home", action = "Index", id = (string)null });
routes.MapRoute("Root", ""
, new { controller = "Home", action = "Index", id = (string)null });
当页面通过“Root”路由时,视图上的链接将指向
http://localhost/mvcapplication1/MvcApplication1/Product.mvc
,显然它不存在。但是,当使用第一个“mvc-default”时,它运行良好。
如果应用程序托管在http://......./下,也可以正常运行。
关于如何解决它的任何提示?
感谢。
答案 0 :(得分:2)
您遇到404错误,因为您已设置路由规则“{controller} .mvc / {action} / {id}”,这显然会在控制器名称后添加.mvc扩展名和“”路由规则因为你正在使用未配置的IIS,所以不会先行,甚至工作。
要在不配置IIS的情况下修复它,您可以将.mvc更改为ASP.Net当前处理的内容,例如.aspx,.asmx或其他内容。
如果您想修复IIS,请访问以下链接,按照说明操作,然后删除.mvc扩展名。
ASP.Net
Phil Haack's blog
如果你只是谷歌的话,你可以找到更多关于它的帖子。
答案 1 :(得分:0)
也许这有效:
更改:
HttpContext.Current.RewritePath(Request.ApplicationPath);
HttpContext.Current.RewritePath(Request.ApplicationPath);
至
在default.aspx.cs(或default.aspx.vb)HttpContext.Current.RewritePath(Request.ApplicationPath, false);
答案 2 :(得分:0)
晚了一年,但也许这会帮助别人。我有同样的问题,因为我们使用IIS6,我通过将这两个条目作为我的路由配置中列出的最后两个条目来实现它:
routes.MapRoute(null, "{controller}.aspx/{action}");
routes.MapRoute(
"Default", // Route name
"{controller}.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
将“.aspx”更改为“.mvc”或您需要的任何内容。