MVC 3尝试将URL启动到View而不是控制器操作

时间:2012-01-13 13:55:30

标签: c# asp.net-mvc controller asp.net-mvc-routing

有时当我启动我的MVC 3项目时,它会尝试为正在呈现的视图加载完全限定的URL,而不是控制器中的操作(这会给我404错误)。其他时候它工作正常,实际上按照预期的方式击中控制器动作,但它大约是50/50。

有时会点击的网址是:http://localhost:xxxx/Views/Account/LogOn.cshtml

以下是Global.asax文件中的默认路由设置:

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Account", action = "LogOn", id = UrlParameter.Optional } 
        );

我也尝试从路由中删除/ {id}参数,因为我认为登录屏幕不需要它。

有什么想法吗?目前,该项目设置非常简单,使用AccountController中的默认操作方法LogOn等。我唯一做的就是更改global.asax文件中的控制器和操作。

3 个答案:

答案 0 :(得分:14)

试试这个:转到Project Properties> Web> Start Action

然后检查Specific Page选项 - 将文本框留空。

答案 1 :(得分:3)

您可能正在使用Visual Studio,并且在调试时可能正在主动编辑.cshtml页面。

当您查看代码文件或来自不在启动项目中的项目(即您的EF /模型项目)中的文件时,请尝试启动调试器,并查看是否将调试器启动到正确的URL

项目属性中可能有一个设置指定启动URL。如果我找到它,我会找它并编辑这篇文章。

答案 2 :(得分:1)

我猜你使用cassini(VS.Net中的内置开发Web服务器)?如果是这样的话,我会一直把它变成VS.Net中的一个错误。切换到IIS 7.5,你不再得到它