Asp.net mvc 2 ASP.NET MVC2区域在IIS6中不起作用

Asp.net mvc 2 ASP.NET MVC2区域在IIS6中不起作用,asp.net-mvc-2,iis-6,web-deployment-project,asp.net-mvc-areas,Asp.net Mvc 2,Iis 6,Web Deployment Project,Asp.net Mvc Areas,我有一个ASP.NET MVC 2应用程序在IIS7和VS Web开发服务器上运行良好。我最近在网站上添加了一些区域,这些区域在IIS7和VS Web开发服务器上也可以很好地工作 但是,当我将此站点部署到运行win2k3的IIS6测试服务器时,这些区域不再工作。对于站点的其余部分,所有使用默认路由的路径都可以正常工作(例如/Home/Index/),但是当我导航到某个区域(例如/Admin/Users/Index/)时,我会得到一个HttpException: System.Web.HttpEx

我有一个ASP.NET MVC 2应用程序在IIS7和VS Web开发服务器上运行良好。我最近在网站上添加了一些区域,这些区域在IIS7和VS Web开发服务器上也可以很好地工作

但是,当我将此站点部署到运行win2k3的IIS6测试服务器时,这些区域不再工作。对于站点的其余部分,所有使用默认路由的路径都可以正常工作(例如/Home/Index/),但是当我导航到某个区域(例如/Admin/Users/Index/)时,我会得到一个HttpException:

System.Web.HttpException:服务器无法访问应用程序目录 “C:\InetPub\MobileWeb\Admin\”。该目录不存在 由于安全设置,存在或不可访问

C:\InetPub\MobileWeb\
是我的站点的根目录。如果我在文件系统中添加了一个管理目录,那么就会出现各种程序集加载错误,但是如果我能让这些区域正常工作,我很确定这不会发生

为了在IIS6上启用ASP.NET MVC,我所做的(以前也做过很多次)就是添加一个通配符处理程序,该处理程序映射到
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet\u isapi.dll
并取消选中“验证文件存在”

我们的构建服务器通过编译VS2008部署项目,然后将输出复制到我们的测试服务器来自动部署此代码。我发现它也有类似的问题,但是如果我正确理解了这个解决方案,它就不起作用了

我是否需要做一些独特的事情来让区域在IIS6上工作

更新- 以下是完整的堆栈跟踪:

[HttpException (0x80004005): Server cannot access application directory 'C:\InetPub\MobileWeb\'. The directory does not exist or is not accessible because of security settings.]
   System.Web.HttpRuntime.EnsureAccessToApplicationDirectory() +8932031
   System.Web.HttpRuntime.HostingInit(HostingEnvironmentFlags hostingFlags) +87

[HttpException (0x80004005): Server cannot access application directory 'C:\InetPub\MobileWeb\'. The directory does not exist or is not accessible because of security settings.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8894095
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +85
   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +259
更新
我尝试使用VS2008发布网站和VS2008 Web部署项目发布到测试服务器(并手动复制文件)-两者都有相同的问题。

似乎是该文件夹的目录级权限。我假设“Everyone”组具有该目录的读取权限。是否有某个帐户被拒绝访问该目录?

您不太可能遇到与我相同的问题,但如果您遇到了,我的解决方案如下:

我添加了一个新的“管理”区域,每当我进入新区域的任何页面时都会出现这个错误,但是,所有其他区域都工作正常

此新区域取代了旧的web表单应用程序,该应用程序托管在IIS中主应用程序下方的虚拟站点上。虚拟站点的根目录是site.com/admin/


旧的应用程序文件已从文件系统中删除,但IIS站点仍处于活动状态。每当有人请求/admin/。。。它是由旧的应用程序处理的,该应用程序(正确地)找不到应用程序根,因此引发了一个异常。

c:\InetPub\MobileWeb如果IIS进程无法访问它,那么这就是您可以获得的错误类型,但为什么他在新目录中会出现编译器错误?有点不对。对于权限来说,这并不是那么牵强,特别是考虑到新目录存在问题。根据问题,没有“新目录”,只有一个最近部署到IIS 6的web应用程序。我是根据错误消息得出这一结论的。它说它无法访问该文件夹。如果我的答案是错误的,请发表你的建议。@Nick DeVore-这是问题的根源。没有管理文件夹,也不应该有——这只是MVC用来找出可以找到控制器和操作的MVC区域的路由的一部分。即使非区域路由比默认路由更复杂,它也能工作吗?例如,
/iis6/die/ready/666
?您从路由调试中发现了什么?它“找到”路由了吗?@bzlm-我真的没有比标准/controller/action/id更复杂的路由了?url_params=stuff,它们都是work@NickDeVore路由调试不适用于区域路由,我得到相同的“服务器无法访问应用程序目录”错误如上-它甚至没有执行路由调试代码我知道你没有这样的路由。我认为你应该制作它们,以帮助找出问题所在。:)