【问题标题】:asp.net mvc application application root issueasp.net mvc 应用程序应用程序根问题
【发布时间】:2009-11-11 16:06:20
【问题描述】:

我有一个 ASP MVC 应用程序,我已在托管服务 (discountasp.net) 上部署到作为根应用程序的子文件夹的应用程序文件夹。即:

-/[root]
-+/apps

根目录和应用程序都设置为 IIS 中的应用程序文件夹。

当我点击默认页面时,我收到错误“无法找到视图 '' 或其母版。搜索了以下位置”。

当我将这个应用程序部署在我的测试服务器上时,它可以工作,并且我已经验证了一切都已正确部署,视图在那里,正确的程序集似乎在那里。我认为 MVC 应用程序没有使用正确的应用程序根目录,因此无法找到视图页面。

我已阅读有关此错误的许多相关帖子,但没有一个典型的解决方案是我的问题:缺少视图文件,缺少主文件。这适用于我尽可能靠近托管公司设置的测试机器。即使我有嵌套的应用程序文件夹。

关于如何纠正这个问题的任何想法?

【问题讨论】:

  • 如果我将应用程序部署到根目录,它就可以工作。如果它部署在应用程序中,而根目录中没有部署任何内容,它也可以工作。一旦我将任何像 default.aspx 文件这样简单的东西放在根目录下,它就会停止工作。
  • 实际上,当我将 web.config 放入根应用程序的根目录时,它会停止工作。

标签: asp.net-mvc hosting


【解决方案1】:

你知道运行的是哪个版本的 IIS 吗?

集成管道模式下的 IIS 7 将为您带来最好的结果。

您可以在 6 中运行,但您必须做一些工作才能让它运行。

这里有几个有用的链接: ASP.NET MVC in a virtual directory

http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

【讨论】:

  • 是IIS7在集成管道模式下运行
  • 谢谢,这些链接间接将我引向了其他最终回答该问题的 SO 问题。
【解决方案2】:

所以要关闭这个循环。问题最终是两个单独的 web.config 文件,其中根 web.config 正在设置我没有在子应用程序中删除的值。我删除了这些,一切正常。

【讨论】:

    【解决方案3】:

    “apps”是网络文件夹层次结构的一部分,还是只是一个物理目录?

    对于前者:视图引擎将检查 /views 文件夹中的视图,而不是 /apps/views。您可以修改(继承和覆盖)默认 Web 表单视图引擎,并告诉它在哪里可以找到视图,如 this thread 所示。

    我觉得有趣的是,每个人都在谈论 MVC 在请求-响应周期中为您提供了多少更多的权力,但我一直看到这些关于过程中非常重要的部分的问题完全模糊且不可配置。我对 MVC 印象不深。

    【讨论】:

    • apps 是一个物理目录,设置为应用程序目录
    • 还有,我只是在用一个简单的小应用程序评估 MVC,不确定我是否购买...
    • 这里有什么不可配置的?您可以根据需要更改视图位置,不是吗?请注意,VirtualPathProvider 不是 MVC,它是 ASP.NET 选项 - 这是 MS 决定保持与旧 ASP.NET(您似乎喜欢)的兼容性。另外,我认为这并不难。这个问题似乎有一个更简单的答案:stackoverflow.com/questions/236972/…
    • 什么不可配置?我不应该将我的类命名为“HomeController”、“FrakController”等等,而不是在我的应用程序上下文中有意义的任何名称。路由机制应该采用类型引用而不是字符串。我不应该创建一个新类来告诉 MVC 在哪里可以找到视图;它应该在一个配置文件中。 (是的,我知道我自己可以做到这一点,但要绕过框架中的愚蠢假设需要做更多的工作)。而且,哦,是的 - 无法将特定于演示文稿的代码放在视图代码隐藏中?怎么回事?所以框架“强制”设计模式?跛脚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多