ASP.NET MVC2 Области не работают в IIS6

У меня есть приложение ASP.NET MVC 2, работающее нормально как на IIS7, так и на сервере веб-разработки VS. Недавно я добавил области на сайт, и они тоже отлично работают на IIS7 и сервере веб-разработки VS.

Однако, когда я развертываю этот сайт на тестовом сервере IIS6 под управлением win2k3, области больше не работают. Все пути, использующие маршруты по умолчанию для остальной части сайта, работают нормально (например, /Home/Index/), однако при переходе в область (например, /Admin/Users/Index/) я получаю HttpException:

System.Web.HttpException: сервер не может получить доступ к каталогу приложения "C:\InetPub\MobileWeb\Admin\". Каталог не существует или недоступен из-за настроек безопасности.

C:\InetPub\MobileWeb\ является корневым каталогом моего сайта. Если я добавлю каталог Admin в файловую систему, я получу различные ошибки загрузки сборок, но я почти уверен, что этого не произойдет, если я смогу заставить области работать правильно.

Все, что я сделал (и делал много раз раньше), чтобы включить ASP.NET MVC на IIS6, - это добавил обработчик подстановочных знаков, который отображается на C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll и снимите флажок "убедиться, что файл существует"

Наш сервер сборки автоматически развертывает этот код, компилируя проект развертывания VS 2008, а затем копируя выходные данные на наш тестовый сервер. Я обнаружил, что у этой статьи есть похожая проблема, но если я правильно понимаю решение, оно мне не помогло.

Есть ли что-то уникальное, что мне нужно сделать, чтобы получить области, работающие на 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 (и вручную скопировать файлы) - оба имеют одну и ту же проблему.

2 ответа

Маловероятно, что у вас была та же проблема, что и у меня, но на случай, если вы это сделали, вот мое решение:

Я добавил новую область "admin" и получал эту ошибку всякий раз, когда переходил на какую-либо страницу в новой области, однако все остальные области работали нормально.

Эта новая область заменила старое приложение веб-форм, которое размещалось на виртуальном сайте под основным приложением в IIS. Корнем виртуального сайта был site.com/admin/.

Старые файлы приложения были удалены из файловой системы, однако сайт IIS все еще оставался активным. Всякий раз, когда поступал запрос для /admin/..., он обрабатывался старым приложением, которое (правильно) не могло найти корень приложения, поэтому оно вызывало исключение.

Похоже, что это разрешения на уровне каталога для этой папки. Я предполагаю, что группа "Все" имеет доступ для чтения к этому каталогу. Есть ли какая-то учетная запись, которой запрещен доступ к этому каталогу?

Другие вопросы по тегам