【问题标题】:MVC 3 tries to launch URL to View instead of controller actionMVC 3 尝试启动 URL 以查看而不是控制器操作
【发布时间】:2012-01-13 13:55:30
【问题描述】:

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

它有时点击的 URL 是: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 文件中的控制器和操作。

【问题讨论】:

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


    【解决方案1】:

    试试这个:去Project Properties > Web > Start Action

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

    【讨论】:

    • 谢谢巴里,这也帮了大忙。我从来不需要用网络表单来做这件事! :)
    【解决方案2】:

    您可能正在使用 Visual Studio,并且当您点击调试时,您可能正在积极编辑 .cshtml 页面。

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

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

    【讨论】:

    • 感谢乔的回复。这确实是正在发生的事情。在查看 .cshtml 页面时启动调试器是个坏主意!我习惯了网络表单,从来没有遇到过这个!再次感谢,我会在允许的情况下将此标记为答案。
    • 旁注:Barry 提供了下面的项目属性位置。
    【解决方案3】:

    我猜你使用的是 cassini(VS.Net 中的内置开发网络服务器)?如果是这样,我总是得到这个并且接缝是 VS.Net 中的一个错误。切换到 IIS 7.5,你就再也找不到它了

    【讨论】:

    • 感谢您的回复-我确实在使用卡西尼。我会试试 IIS 7.5。
    猜你喜欢
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    相关资源
    最近更新 更多