ASP.NET MVC2 Области не работают в IIS6 - PullRequest
3 голосов
/ 04 октября 2011

У меня приложение 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 ]

0 голосов
/ 10 октября 2011

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

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

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

.

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

0 голосов
/ 04 октября 2011

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

...