ASP.NET Приложение 2.0 в IIS 5 Приводит к ошибке (aspnet_wp.exe (PID:XXXX) неожиданно остановился.)

StackOverflow https://stackoverflow.com/questions/233478

Вопрос

После размещения веб-приложения ASP.NET 2.0 на сервере Windows 2000 (IIS 5).Мне не удалось зайти на веб-сайт.

В браузере появилось следующее сообщение об ошибке и были добавлены три записи в журнале событий...

Сообщение об ошибке в браузере

Серверное приложение недоступно Веб-приложение, к которому вы пытаетесь получить доступ на этом веб-сервере, в данный момент недоступно.Пожалуйста, нажмите кнопку "Обновить" в вашем веб-браузере, чтобы повторить запрос.

Записи в журнале событий

Тип события:Ошибка
Источник события:ASP.NET 2.0.50727.0
Категория события:Нет
Идентификатор события:1000
Дата:10/24/2008
Время:15:45:26 вечера
Пользователь:N/A
Компьютер:XXXXX
Описание:aspnet_wp.exe (PID:XXXX) неожиданно остановился.

Тип события:Ошибка
Источник события:ASP.NET 2.0.50727.0
Категория события:Нет
Идентификатор события:1088
Дата:10/24/2008
Время:15:45:26 вечера
Пользователь:N/A
Компьютер:XXXXX
Описание:Не удалось выполнить запрос, поскольку не удалось создать Домен приложения.Ошибка:0x80070005 Доступ запрещен.

Тип события:Предупреждение
Источник события:ASP.NET 2.0.50727.0
Категория события:Нет
Идентификатор события:1073
Дата:10/24/2008
Время:15:45:26 вечера
Пользователь:N/A
Компьютер:WEBDEV
Описание:Не удалось инициализировать домен приложения:/LM/W3SVC/1/Root/WebApplicationName
Исключение:Исключение System.IO.FileLoadException
Сообщение:Не удалось загрузить файл или сборку 'System.Web, Версия=2.0.0.0, Культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a' или одна из его зависимостей.Доступ запрещен.Отслеживание стека:в системе.Размышление.Сборка.nLoad(имя файла AssemblyName, Строковая кодовая база, Доказательство безопасности сборки, Местоположение сборки, StackCrawlMark& stackMark, Логическое значение throwOnFileNotFound, Логическое значение forIntrospection)
в системе.Отражение.Сборка.Внутренняя загрузка (AssemblyName AssemblyRef, Evidence assemblySecurity, StackCrawlMark & stackMark, логический предварительный просмотр)
в системе.Отражение.Сборка.Внутренняя загрузка (строка assemblyString, доказательство assemblySecurity, StackCrawlMark & stackMark, логический предварительный просмотр)
в системе.Активатор.CreateInstance(String AssemblyName, String typeName, Boolean IgnoreCase, BindingFlags, bindingAttr, Binder binder, Object[] аргументы, CultureInfo культура, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
в системе.Активатор.CreateInstance(строковое имя сборки, Строковое имя типа)
в системе.AppDomain.CreateInstance(строковое имя сборки, строковое имя типа)
в системе.AppDomain.CreateInstance(строковое имя сборки, строковое имя типа)
на System.Web.Hosting.Менеджер приложений.CreateAppDomainWithHostingEnvironment(Строка AppID, IApplicationHost AppHost, параметры HostingEnvironmentParameters Параметры hosting)
на System.Web.Hosting.Менеджер приложений.Создайте домен приложения с параметрами Hostingenvironmentandreporterrors(String AppID, IApplicationHost AppHost, hostingenvironmentпараметры hostingParameters)

Есть какие-нибудь идеи...

** Редактировать **

И почему System.IO.FileLoadException выдается для доступа к System.Веб-сборка?

Это было полезно?

Решение

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

Я добавил

  • IUSER_MACHINENAME (Учетная запись гостя в Интернете)
  • ASPNET (ASP.NET Учетная запись компьютера)

С Чтение и выполнение, Список Содержимого папки и Читать разрешения.

Несмотря на то, что проблема решена, у меня все еще есть некоторые вопросы

Из третьей записи журнала событий ясно, что ApplicationManager не удается создать среду HostingEnvironment, которая находится в системе.Веб-сборка.

Поскольку FileLoadException генерируется для System.Web, похоже, что ASP.NET рабочий процесс не имеет доступа к папке GAC.

Почему возникает исключение FileLoadException для доступа к System.Web?

Другие советы

Судя по всему, у вас неверно установлено разрешение для вашей ASP.NET установки.Как правило, лучше всего просто удалить и переустановить часть ASP.NET.Вы можете легко сделать это следующим образом.

  1. Откройте командную строку, чтобы C:\windows\microsoft.net\framework\v2.0.50727
  2. выполните следующую команду:aspnet_regiis.exe -у
  3. выполните следующую команду:aspnet_regiis.exe -я

Это приведет к удалению ASP.NET и повторной установке, после чего должны быть установлены надлежащие разрешения для учетной записи.

Эта ошибка означает, что ваш код вызвал исключение, которое либо привело к сбою IIS, либо вынудило его завершить работу.Распространенными исключениями, которые вызывают это, являются OutOfMemoryException и StackOverflowException.

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

Однако первое, что я бы сделал, чтобы исключить проблему с загрузочной сборкой, - это попытаться обдумать ее в тестовом жгуте и посмотреть, возникнет ли такая же проблема.Если это так, то проблема связана с библиотекой DLL, которую вы пытаетесь загрузить, а не с IIS.

У меня была такая же проблема, и она не исчезла с помощью aspnet_regiis with -u и -i и многих других предложенных здесь.Но после того, как я очистил “% windir%\ Microsoft.NET\Framework\v2.0.50727\Временный ASP.NET Файлы” и предоставил пользователю права на чтение и запись в эту папку из раздела олицетворения личности в web.config, проблема исчезла.Этого было недостаточно, чтобы предоставить локальному пользователю ASPNET эти права.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top