【问题标题】:Cannot debug views in MVC2 project, getting "The resource cannot be found" error无法在 MVC2 项目中调试视图,出现“找不到资源”错误
【发布时间】:2010-04-12 13:49:33
【问题描述】:

我在 Win7 上运行 Visual Studio 2008 sp1,并安装了 MVC2 RTM。

我使用向导创建了一个新的 MVC2 项目,但无法调试特定页面。使用 webforms 甚至 MVC1,我可以坐在 View 页面上,按 F5,然后让 VS2008 中的集成 Web 服务器在我正在处理的页面上启动。对于构建应用逻辑非常方便。

当我现在尝试这个时,我得到一个“找不到资源”的错误页面。

我刚刚用一个新的 MVC2 Web 应用程序项目重试了这个。以下是我在创建新项目以重现后采取的步骤:

  1. 打开项目设置。在 Web 子选项卡下,将开始操作设置为“当前页面”。保留所有其他设置。
  2. 打开其中一个视图(例如 Account/Register.aspx)
  3. 按 F5 调试项目
  4. 请注意,显示的浏览器窗口显示错误消息“找不到资源”。

我在浏览器中看到的这次运行的链接是:http://localhost:49471/Views/Account/Register.aspx

我进行了一些谷歌搜索,发现了与确保安装所有 HTTP 服务器部件相关的建议。我仔细检查并确保都安装了“HTTP Errors”和“HTTP Redirection”。

如果我保留原来的项目设置,设置为“特定页面”,文本框中没有任何内容,然后路由工作,我总是得到默认主页。我希望这不是唯一的选择。

谢谢!

【问题讨论】:

    标签: asp.net asp.net-mvc-2


    【解决方案1】:

    通常,ASP.NET MVC 中的“找不到资源”(即 HTTP 404)表示某种路由问题。

    将开始操作设置为页面(任何页面)可能是您遇到此问题的原因。 AFAIK,这总是会导致 404,因为 MVC 项目不做页面,他们做动作。

    尝试清除 Start Action - 当您运行项目时,您应该会看到 Index 操作/视图“页面”出现。以后,如果您想在启动时转到特定的控制器操作,请在启动操作中输入 [ControllerName]/[Action],不要使用 .aspx 页面名称。

    【讨论】:

    • tks 快速响应。我以为我在我的旧 MVC1 项目中有这个工作,但上面的评论可能不是。我大部分时间都花在网络表单上,并且正在处理一些 MVC 项目。因此,当您正在处理视图并希望在浏览器中查看它时,您总是在主应用程序页面中进行调试,然后将浏览器中的 URL 行更改(或直接导航)到您想要的页面?跨度>
    • 您仍然可以使用“开始”操作“跳转”到某个操作,例如mysite.com/someController/someAction/someParameter 只是不要包含页面名称。
    【解决方案2】:

    由于我刚刚发现此链接正在寻找相同类别的答案,因此希望这会有所帮助,因为实际上没有人回答我的问题。如果它是相同的,这就是有效的:

    VS,当您更改启动页面时(通过鼠标右键单击该页面并选择“设置为起始页面”)似乎放置路径(在 MVC 项目中),就好像这是一个普通的旧 ASPX网络应用程序。当您想要特定页面时,您想要的项目属性中的路径是Web服务器之后的路径(通常在开发时:http:\ localhost:####)。因此,如果您想要您的页面“foo.aspx”或“foo.cshtml”(假设您在“Home”下,您需要放置 Home\foo(无扩展名)。

    这还假设您的“虚拟路径”设置为“\”。

    重点是,您不要使用文件夹和扩展名。对我来说似乎是一个错误(又名:“正在审查的功能”)。由于项目类型是 MVC(带有 aspx 或 cshtml 页面),因此项目属性页面应该知道如何实现这一点。考虑这是一个请求:)

    但至少现在您可以测试/开发特定页面。

    HTH。

    【讨论】:

      【解决方案3】:

      如果您在将区域添加到项目之前复制了您正在使用的控制器,请仔细检查您的命名空间!

      【讨论】:

        【解决方案4】:

        发生这种情况的一个原因是您的 Web 项目属性下没有设置起始页。这样做:

        Right click on your mvc project
        Choose "Properties"
        Select the "Web" tab
        Select "Specific Page"
        Assuming you have a controller called HomeController and an action method called Index, enter "home/index" in to the text box corresponding to the "Specific Page" radio button.
        

        现在,如果您启动 Web 应用程序,它将带您进入由 HomeController 的 Index 操作方法呈现的视图。

        (或)

        简单地说,您也可以在项目中打开其中一个控制器,然后按 F5 或 Ctrl + F5。

        现在发生的事情是,您当前位于 /Views/home/Index.cshtml 视图中,您只需按 F5 或 Ctrl + F5。在 mvc 项目中,您无法直接打开带有 .cshtml 扩展名的文件,因为 IIS 无法理解。控制器应该从 action 方法中返回匹配的视图。

        附带说明,请检查您是否正确安装了 MVC 3。如果我的回答没有帮助,我很抱歉..

        参考code project

        【讨论】:

          猜你喜欢
          • 2021-07-18
          • 1970-01-01
          • 1970-01-01
          • 2013-06-19
          • 2020-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多