我有一个asp.net-mvc应用程序,其中包含由我的'用户'控制器提供的以下aspx页面:Index.aspx,User.aspx,UsersIntoActivity.aspx和UsersUsingLocation.aspx。
在我的Global.ashx.cs中,我设置了以下路线:
routes.MapRoute(
"UsersHome",
"Users",
new { controller = "Users", action = "Index" });
routes.MapRoute(
"Users",
"Users/{id}/{name}",
new { controller = "Users", action = "User", id = "", name = "" });
routes.MapRoute(
"UsersUsing",
"Users/Using/{locationId}/{name}",
new { controller = "Users", action = "UsersUsingLocation", locationId = "", name = "" });
routes.MapRoute(
"UsersInto",
"Users/Into/{activityId}/{name}",
new { controller = "Users", action = "UsersIntoActivity", activityId = "", name = "" });
问题在于,当我尝试通过网址的网站/ Users / Into / 1 / some-activity'或网站/ Users / Using / 1 / some-location访问UsersIntoActivity.aspx或UsersUsingLocation.aspx时,相应的ActionResult正在调用方法,但之后也会调用User方法。
答案 0 :(得分:2)
我认为该路由的第二个请求是出于某种原因来自浏览器。尝试使用Fiddler2捕获浏览器和Web服务器之间的流量。这可以帮助您排除发生301/302重定向的可能性,或者在呈现的HTML中存在对其他资源的引用(例如在图像,脚本或链接标记中)。
答案 1 :(得分:2)
继gWiz的回复之后,作为在IIS中应用映射扩展后的一般规则(对于IIS 5和6),我然后右键单击图像和/或脚本FOLDERS的属性,然后删除刚刚添加的aspnet_isapi扩展。现在不会为这些文件夹中的文件请求调用MVC路由。
或者在全局asax中设置忽略路由扩展名。
this.Routes.IgnoreRoute("Content/{*pathInfo}");
//e.g if your images, css, scripts are in a content folder
答案 2 :(得分:1)