Thủ Thuật về Http error 503. the service is unavailable. iis Mới Nhất
Dương Gia Minh đang tìm kiếm từ khóa Http error 503. the service is unavailable. iis được Update vào lúc : 2022-03-25 21:59:07 . Với phương châm chia sẻ Thủ Thuật Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi Read Post vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Tác giả lý giải và hướng dẫn lại nha.
UserLock Frequently Asked Questions
Nội dung chính- Other related questionsОписание ошибки 503 на IISПричины ошибки HTTP Error 503. The service is unavailableМетоды устранения ошибки 503 на IISПереустановка системыПроверка работы NET.FrameworkОтключение 32 битного режима на пуле IISОтключение Load User Profile на пуле IISНе создает временный файл конфигурации пулаДва сайта на 443 портуДополнительные методыVideo liên quan
I get the error message “HTTP Error 503 - Service unavailable” when displaying the UserLock Web console. How do I fix it? When displaying the UserLock Web Console, the following error message appears:
ERROR 503 – Service unavailable
This message is displayed because the UserLockAppPool application pool in IIS failed to start.
And in the Application log in the Windows Event Viewer of your UserLock server, we find the following error:
The Module DLL 'C:Program FilesMicrosoftExchange ServerV14Binkerbauth.dll' could not be loaded due to a configuration problem. The current configuration only supports loading images built for a x86 processor architecture. The data field contains the error number.
With “IIS-W3SVC-WP” as source and 2282 as “Event ID”.
This is a known issue on a 64-bit server with Exchange which set default dll to load on all Application pool. UserLock tries to load a dll that it doesn’t need, because Exchange set it as default, and this dll doesn’t exist in 32-bit version.
You can work around this issue modifying these dll loading settings.
Locate and backup the following file:
%windir%system32inetsrvconfigapplicationhost.config
In the "globalModules" section, find and modify the following entries by adding preCondition="bitness64" just before "/>" for each line (except if preCondition="bitness64" is already there):
- "kerbauth"
For example, on Exchange V15, replace:
By
In each "isapiFilters" section, find and modify the following entries by adding preCondition="bitness64" just before "/>" for each line (except if preCondition="bitness64" is already there):
- "Exchange OWA Cookie Authentication ISAPI Filter"
For example, on Exchange V14, replace:
By
Save and close the file
Restart IIS (run IISRESET command) and relaunch the UserLock Web Console
The UserLock Web Console should now work. If the same error still occurs, additional modules may require this precondition -- the Application log in the Windows Event Viewer can be used to determine which modules, if any, are causing bitness issues. Another solution is to change the UserLockAppPool application pool to 64-bit.
We do not recommend you this solution if you use the default Access Database which will not allow you to run report from the web console.
Other related questions
CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900
Обновлено 03.07.2022
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз мы с вами научились чинить две вещи в Windows 10, это пресловутый черный экран и ошибку запуска в приложениях из-за отсутствия библиотеки vcruntime140.dll. Двигаемся дальше и сегодня решим еще один интересный пазл с веб сервисом IIS и ошибкой "HTTP Error 503. The service is unavailable". Думаю, что мои грабли будут вам весьма интересны.
Описание ошибки 503 на IIS
Не так давно я устанавливал отказоустойчивую службу Remote Desktop Services High Availability на базе Windows Server 2022. Сами роли установились корректно и без ошибок в мастере, я успешно создал коллекцию, опубликовал RemoteApp приложения и хотел их протестировать, но какого же было мое удивление, когда я в место привычной формы авторизации увидел ошибку:
Service Unavailable: HTTP Error 503. The service is unavailable.
Причины ошибки HTTP Error 503. The service is unavailable
Сразу могу сказать, что данную проблему вы можете встретить в любом продукте компании Microsoft, где в качестве веб движка используется служба IIS (Internet Information Services). Из популярных:
- RDS фермыShare PointExchangeПросто сайты на IIS
Сама проблема связана в связке IIS и Net.Framework. Обычно ошибка указывает на то, что веб-страница или запрос ресурса понятен серверу, но последний не может выполнить его по той или иной причине, или же из-за банальной перегрузки, когда не хватает ресурсов.
Методы устранения ошибки 503 на IIS
Сразу скажу, что вам придется в большинстве случаев попотеть, чтобы найти причину падения вашей службы, но обо всем по порядку. Из причин можно выделить:
- Отсутствие прав у учетной записи, которая запускает пул приложенийВы запускаете пул в режиме 32 битаУ вас просто не работает пул приложенийПроблема с NET.FrameworkПроблема на уровне операционной системы из-за ошибок целостности
Переустановка системы
Как бы это смешно не звучало, но в последнем случае у меня после того, как я все перепробывал чтобы устранить ошибку 503 на IIS, уже кончились идеи и я просто снес все так как система была чистая и поставил заново, но уже более свежий дистрибутив и о чудо проблема ушла.
Не знаю, в чем было дело, то ли глюки при обновлении Windows Server 2022, то ли что-то со сборкой которая у меня была, не могу точно сказать. До переустановки у меня была версия Windows 1809 (Сборка ОС 17763.1282)
После переустановки я поставил версию от июня 2022. Когда я уже в ней запускал сайт RDweb на ферме RDS, то сервис ответил корректно и HTTP Error 503 я не увидел.
Так, что если у вас только, что установленная Windows Server 2022, то попробуйте ее снести и установить заново, это может быть куда быстрее чем заниматься траблшутингом, самое ценное это ваше время, лучше уж провести его полезнее.
Проверка работы NET.Framework
По умолчанию в Windows Server 2022 при установке добавляется NET.Framework версии 4.7. Очень часто он может быть добавлен кривовато. В случае с Remote Desktop Services мне пришлось:
- Удалить роль IIS и RDSУдалить компонент NET.FrameworkСкачать NET.Framework версии 4.7. Скачиваем потому, что после его удаления у вас не будет работать диспетчер серверов и установка из PowerShell.Установить NET.Framework версии 4.7Устанавливаете IISУстанавливаете RDS
В результате данного шаманства в сможете запустить RDweb на вашей RDS ферме минуя ошибку "Service Unavailable: HTTP Error 503. The service is unavailable".
Но перед всеми этими рокировками я вам советую, как и в случае с зависанием пула IIS обратиться к логам и попытаться там найти, что-то что даст нам направление для поиска информации. Напоминаю посмотреть логи Windows вы можете через оснастку "Просмотр событий" или веб-сервис Windows Admin Center. Советую смотреть четыре журнала. Первые два стандартные, это "Система" и "Приложения". Например вы можете увидеть вот такое событие с предупреждением:
Код ID 1309: Event code: 3005 Event message: Возникло необработанное исключение. Event time: 30.06.2022 18:34:41 Event time (UTC): 30.06.2022 15:34:41 Event ID: aa3cbb1255f3432d813e6c5cb75395ed Event sequence: 14 Event occurrence: 1
Event detail code: 0
Application information: Application domain: /LM/W3SVC/1/ROOT/RDWeb/Pages-2-132380048755425068 Trust level: Full Application Virtual Path: /RDWeb/Pages Application Path: C:WindowsWebRDWebPages
Machine name: RDSH03
Process information: Process ID: 3416 Process name: w3wp.exe
Account name: IIS APPPOOLRDWebAccess
Exception information: Exception type: NullReferenceException Exception message: Ссылка на объект не указывает на экземпляр объекта. в Microsoft.TerminalServices.Publishing.Portal.FormAuthentication.TSFormAuthTicketInfo..ctor(HttpContext objHttpContext) в ASP.ru_ru_default_aspx.
в System.Web.UI.Page.
Request information: Request URL: https://rdsh03.root.pyatilistnik.org:443/RDWeb/Pages/ru-RU/Default.aspx Request path: /RDWeb/Pages/ru-RU/Default.aspx User host address: 192.168.31.100 User:
Is authenticated: False
Authentication Type:Thread account name: IIS APPPOOLRDWebAccess
Thread information: Thread ID: 7 Thread account name: IIS APPPOOLRDWebAccess
Is impersonating: False
Stack trace: в Microsoft.TerminalServices.Publishing.Portal.FormAuthentication.TSFormAuthTicketInfo..ctor(HttpContext objHttpContext) в ASP.ru_ru_default_aspx.Custom sự kiện details:
Из которого понятно, что у меня не запущен пул. Откройте оснастку IIS и перейдите в раздел "Пулы приложений". Далее найдите нужный, в моем примере это RDWebAccess. Как видно у него статус "Остановлено", попробуйте его запустить.
Если пул не запускается, то я вам советую активировать в просмотре событий два дополнительных журнала:
- Microsoft-Windows-IIS-Configuration/AdministrativeMicrosoft-Windows-IIS-Configuration/Operational
Так же что-то полезное вы можете найти в текстовом файле располагающемся по пути:
C:WindowsSystem32LogFilesHTTPERR
Как видно из файла у меня был выключен пул "2022-07-01 08:34:12 ::1%0 62570 ::1%0 443 HTTP/2 GET /RDWeb 5 503 1 Disabled RDWebAccess". У вас может быть тут другая ошибка.
Вы можете выполнить в PowerShell вот такой запрос по получению информации из данного файла, только для 503 кода.
Get-ChildItem -Path ‘C:windowssystem32LogFilesHTTPERR’ -Include *.log -Recurse | Where-Object LastWriteTime -gt (Get-Date).AddDays(-7) | Select-String -SimpleMatch ‘ 503 ‘
Отключение 32 битного режима на пуле IIS
В журнале Microsoft-Windows-IIS-W3SVC-WP вы можете увидеть ошибку с кодом события: 2282, где:
Не удалось загрузить модуль DLL из-за ошибки в конфигурации. Текущая конфигурация поддерживает только загрузку образов для x86 архитектуру процессора. Поле данных содержит номер ошибки.
По умолчанию 32-разрядная поддержка отключена в пулах приложений. Если не требуется поддержка 32-разрядных, проверьте параметры каждого из пулов приложений убедитесь, что значение Разрешить 32-разрядные приложения имеет значение .
Откройте дополнительные параметры у нужного пула, через контекстное меню.
Еще раз проверьте что параметр Enable32bitAppOnWin64 (Разрешить 32-разрядные приложения) имеет значение "False".
Подробнее об этом вот тут - https://support.microsoft.com/ru-ru/help/2619402/error-503-service-unavailable-when-you-browse-windows-sbs-websites
Я очень часто встречал безалаберных системных администраторов, которым было лень создавать отдельные учетные записи для каждой службы или сервиса с которой они работают. Они делали просто, запускали все из под себя с максимальными правами или для теста так делали и забывали, что так оставили. Потом с течением времени учетную запись могут отключить или сменить пароль, что сразу делает ваш пул неработоспособным, он просто не может запустить его. Исходя из этого проверьте данную ситуацию. В дополнительных параметрах найдите раздел "Удостоверение" и посмотрите от имени кого у вас запущен ваш пул, по умолчанию должна быть встроенная учетная запись "ApplicationPoolidentity".
При необходимости вы можете выбрать другую учетную запись для запуска пула. После изменения, обязательно перезапустите пул, а лучше саму службу IIS.
Отключение Load User Profile на пуле IIS
Когда пользователь входит в систему в интерактивном режиме, система автоматически загружает профиль пользователя. Если служба или приложение олицетворяет пользователя, система не загружает профиль пользователя. Поэтому служба или приложение должны загрузить профиль пользователя с помощью LoadUserProfile .
Службы и приложения, которые вызывают LoadUserProfile, должны проверить, есть ли у пользователя временный профиль. Если пользователь имеет перемещаемый профиль, указать путь к нему в качестве lpProfilePath члена PROFILEINFO.
Для IIS этот параметр указывает, должна ли служба загружать профиль пользователя для удостоверения пула приложений. Если значение этого параметра "True", то служба IIS загружает профиль пользователя для удостоверения пула приложений. Если необходимо поведение IIS 6.0 без загрузки профиля пользователя для удостоверения пула приложений задайте значение "False". Так, что если получаете "HTTP Error 503. The service is unavailable" и ничего не помогает, то пробуем его отключить.
Не создает временный файл конфигурации пула
Ошибку "Service Unavailable: HTTP Error 503. The service is unavailable" вы легко можете ловить из-за того, что ваш пул по какой-то причине не может создать временный файл конфигурации и об этом может свидетельствовать предупреждение в логах:
Службе активации процессов Windows не удалось создать файл конфигурации пула приложений для пула приложений < DefaultAppPool >. Тип ошибки: «5». Чтобы решить эту проблему, убедитесь, что файл applicationhost.config указан правильно, и повторите последние изменения конфигурации.
Подробнее об этом на - https://support.microsoft.com/en-in/help/4050891/error--503-and-was-sự kiện-5189-from-web-applications-on-windows-10
Все происходит по причине того, что служба активации Windows (WAS) создает временный файл конфигурации для каждого пула приложений IIS в папке C:inetpubtempappPools во время обычной работы.
На начальном этапе обновления "Центр обновления Windows" сканирует существующие папки и файлы и записывает их пути для восстановления после обновления. Однако, поскольку файлы конфигурации являются временными, они удаляются при остановке WAS.
На следующем этапе Центра обновления Windows эти ранее отсканированные файлы и папки копируются во временную папку обновления. После обновления Windows "Центр обновления Windows" создает символическую ссылку на каждую папку, которая была скопирована во временное местоположение обновления, прежде чем он пытается восстановить эти файлы и папки в их исходное местоположение.
Однако поскольку эти временные файлы конфигурации больше не существуют, Центр обновления Windows не удаляет символические ссылки.
Когда WAS пытается запустить как рабочий процесс IIS, он не создает временную папку для записи конфигурации из-за символических ссылок.
- Из командной строки от имени администратора
- Из оболочки PowerShell в режиме администратора
Stop-Service -Force WAS Remove-Item -Recurse -Force C:inetpubtempappPools*
Start-Service W3SVC
Два сайта на 443 порту
Был интересный случай в прошлом, мне нужно было перенести один сайт с IIS на другой сервер. После переноса вместо сайта я видел уже вам известную ошибку "Service Unavailable: HTTP Error 503. The service is unavailable". Самое интересное, что ошибка была только для HTTPS, в то время как HTTP работал нормально. Напоминаю, что по умолчанию https использует порт 443, зная это я решил посмотреть, что слушает порт, можно было конечно воспользоваться утилитами netstat или TCPView, но я пошел в тот момент через PowerShell. Введите команду, чтобы посмотреть, что порт слушается.
Get-NetTCPConnection -LocalPort 443 -State Listen
Как видно сервер слушается.
Если вы когда-нибудь столкнетесь с такой проблемой как 503 ответ, то попробуйте остановить службу веб-публикации
Stop-Service -Name w3svc -PassThru
И после этого опять запустить команду на прослушивание, если и в этом случае вы видите, что 443 порт ответил, то поздравляю у вас есть другой сервис мешающий IIS.
Если это сервер, который вы унаследовали, может быть нелегко определить, что прослушивает этот конкретный порт. Я установлю модуль PowerShell с именем Carbon (https://www.powershellgallery.com/packages/Carbon/) из галереи PowerShell, чтобы определить, что происходит.
Install-Module -Name Carbon -Force -AllowClobber
Когда веб-сервер не-IIS установлен в Windows, он устанавливает ACL для порта, который будет прослушивать. Вы можете увидеть ACL, который ссылается на порт 443.
То же самое через cmd - netsh show urlacl
На самом деле, есть две записи для порта 443. Тот, у кого GUID все в порядке, так как он предназначен только для конкретного приложения через заголовок узла, а не по всему пространству имен.
Второе я вычислил через TCPView, это было приложение Dell EqualLogic SAN Headquarters, установленное на этом конкретном сервере, оно вызывало проблему, поэтому я решил удалить его, так как оно больше не нужно.
Хоть я и удалил Dell EqualLogic SAN Headquarters с сервера, это не удалило ACL, назначенный порту 443.
Поскольку деинсталляция приложения не решила проблему, я решил принудительно удалить ACL
Revoke-HttpUrlPermission -Url https://+443/ -Principal 'NT AUTHORITYSYSTEM'
То же самое через cmd - netsh delete urlacl url = [вставить URL]
После удаления этой записи и перезапуска веб-службы проблемы с прослушиванием IIS через порт 443 были решены.
Кстати можно в логах посмотреть кто установил ACL, но там не всегда все подробно. Выполните:
Get-WinEvent -FilterHashtable @LogName="System";ProviderName="Microsoft-Windows-HttpEvent";Level=4 -MaxEvents 1 | Select-Object -Property Message