【发布时间】:2011-11-30 04:52:45
【问题描述】:
我有一个 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\ 是我网站的根目录。如果我将 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 部署项目(并手动复制文件)发布到测试服务器 - 两者都有相同的问题。
【问题讨论】:
-
即使非区域路由比默认路由更复杂,它也能正常工作吗?例如。
/iis6/die/already/666? -
路由调试有什么发现?它“找到”路线了吗?
-
@bzlm - 我真的没有比标准 /controller/action/id?url_params=stuff 更复杂的路线,而且它们都可以工作
-
@NickDeVore 路由调试不适用于区域路由,我得到与上面相同的“服务器无法访问应用程序目录”错误 - 它甚至没有执行路由调试代码
-
我知道你没有这样的路线。我认为您应该制作它们,以帮助查明问题。 :)
标签: asp.net-mvc-2 iis-6 web-deployment-project asp.net-mvc-areas