2009-11-11 111 views
0

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

-/[root] 
-+/apps 

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

当我打开默认页面时,出现错误“The view”或其主人无法找到,搜索到以下位置“。

当我将应用程序部署到我的测试服务器上时,该应用程序可以正常工作,并且我已验证所有部件都正确部署,视图在那里,正确的程序集似乎在那里。我相信MVC应用程序没有使用正确的应用程序根目录,因此无法找到视图页面。

我读过这个错误的一些相关的帖子,但没有典型的解决方案是我的问题:缺少视图文件,缺少主文件。这可以在我已尽可能接近托管公司的测试机器上运行。即使我有嵌套的应用程序文件夹。

有关如何解决此问题的任何想法?

+0

如果我将它部署到根目录,该应用程序可以正常工作。如果它部署在应用程序中并且没有在根中部署任何东西,它也可以工作只要我将一个像default.aspx文件那样简单的东西放在根中,它就会停止工作。 – MikeD 2009-11-11 23:41:37

+0

实际上,当我将web.config放入根应用程序的根目录后,它就停止工作。 – MikeD 2009-11-12 00:05:12

回答

0

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

在前者的情况下:视图引擎将检查/ views文件夹的视图,而不是/ apps/views。您可以修改(继承和覆盖)默认Web表单视图引擎,并将其指示到何处查找视图,如this thread中所示。

我认为每个人都一直在讨论MVC在请求 - 响应周期中给你多少更多的权力,但我总是看到这些问题关于这个过程中非常重要的部分,这些部分完全被遮盖和不可配置。我对MVC印象不深。

+0

应用程序是一个物理目录,设置为应用程序目录 – MikeD 2009-11-11 16:21:45

+0

和雅,我只是用一个简单的小应用程序来评估MVC,不确定我是否还在... – MikeD 2009-11-11 16:23:37

+0

什么是不可配置的?你可以根据需要更改视图位置,不是吗?请注意,VirtualPathProvider不是MVC,它是ASP.NET选项 - 这是MS决定保持与旧ASP.NET(您似乎喜欢)的兼容性。另外,我不认为这很难;这个问题似乎有一个更简单的答案:http://stackoverflow.com/questions/236972/using-virtualpathprovider-to-load-aspnet-mvc-views-from-dlls – queen3 2009-11-11 18:33:24

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

+0

这是在集成管道模式下运行的IIS7 – MikeD 2009-11-11 23:39:48

+0

谢谢,这些链接间接将我引向其他SO问题,最终回答了这个问题。 – MikeD 2009-11-19 04:37:12

1

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