ASP.NET MVC2区域在IIS6中不起作用

时间:2011-10-03 20:03:44

标签: asp.net-mvc-2 iis-6 web-deployment-project asp.net-mvc-areas

我在IIS7和VS Web开发服务器上都运行了一个ASP.NET MVC 2应用程序。我最近在网站上添加了区域,这些在IIS7和VS Web开发服务器上也能正常工作。

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

  

System.Web.HttpException:服务器无法访问应用程序目录   'C:\ INETPUB \ MobileWeb \管理\'。目录没有   由于安全设置而存在或无法访问。

C:\InetPub\MobileWeb\是我网站的根目录。如果我将一个Admin目录添加到文件系统,那么我会得到各种程序集加载错误,但我很确定如果我能让这些区域正常工作就不会发生这种情况。

我在IIS6上启用ASP.NET MVC所做的所有事情(并且之前做了很多次)是添加一个映射到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll的通配符处理程序并取消选中“验证该文件是否存在”

我们的构建服务器通过编译VS 2008部署项目自动部署此代码,然后将输出复制到我们的测试服务器。我发现this article有类似的问题,但如果我正确理解了解决方案,那就没有用。

我是否需要做一些独特的工作才能让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部署项目发布到测试服务器(并手动复制文件) - 两者都有相同的问题。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你不太可能遇到和我一样的问题,但如果你在这里做了我的解决方案:

我添加了一个新的“管理员”区域,每当我去新区域的任何页面时都会收到此错误,但所有其他区域都正常工作。

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

旧的应用程序文件已从文件系统中删除,但IIS站点仍处于活动状态。每当一个请求进入/ admin / ...时,它都是由旧的应用程序处理的,它正确地找不到应用程序根,所以它引发了异常。