ASP.NET Приложение 2.0 в IIS 5 Приводит к ошибке (aspnet_wp.exe (PID:XXXX) неожиданно остановился.)
-
04-07-2019 - |
Вопрос
После размещения веб-приложения 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.Вы можете легко сделать это следующим образом.
- Откройте командную строку, чтобы C:\windows\microsoft.net\framework\v2.0.50727
- выполните следующую команду:aspnet_regiis.exe -у
- выполните следующую команду: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 эти права.