ASP.. NET MVC2区域在IIS6中不工作



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

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

包含。HttpException: Server cannot access application directory"C: InetPub MobileWeb Admin "。目录没有存在或由于安全设置而无法访问。

C:InetPubMobileWeb是我站点的根目录。如果我将Admin目录添加到文件系统中,我会得到各种程序集加载错误,但我很确定,如果我能使这些区域正常工作,就不会发生这种情况。

我所做的一切(以前也做过很多次)都是为了启用ASP。IIS6上的。NET MVC是添加一个映射到C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_isapi.dll的通配符处理程序,并未选中"验证文件存在"

我们的构建服务器通过编译VS 2008部署项目自动部署这些代码,然后将输出复制到我们的测试服务器。我发现这篇文章有一个类似的问题,但如果我正确理解的分辨率,它不工作我。

我需要做一些独特的事情来让IIS6工作吗?

-下面是完整的堆栈跟踪:

[HttpException (0x80004005): Server cannot access application directory 'C:InetPubMobileWeb'. 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:InetPubMobileWeb'. 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部署项目(并手动复制文件)发布到测试服务器-两者都有相同的问题。

似乎是该文件夹的目录级权限。我猜"人人"组对那个目录有读访问权。是否有某个帐户被拒绝访问该目录?

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

我添加了一个新的"admin"区域,每当我进入新区域的任何页面时都会出现此错误,然而,所有其他区域都工作正常。

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

旧的应用程序文件已经从文件系统中删除,但是IIS站点仍然是活动的。每当请求/admin/…它是由旧的应用程序处理的,它(正确地)找不到应用程序的根,所以抛出了一个异常。

最新更新