WinInet не поддерживается в службе или приложении IIS
Предупреждение
Устаревшее и не поддерживаемое классическое приложение Internet Explorer 11 было окончательно отключено путем обновления Microsoft Edge в некоторых версиях Windows 10. Дополнительные сведения см. в разделе Часто задаваемые вопросы о прекращении поддержки программы для настольных компьютеров Internet Explorer 11.
Интернет-функции Microsoft Win32 (экспортированные из WinInet.dll) не поддерживаются при запуске из службы или приложения IIS (также службы). В этой статье рассматривается использование WinInet.dll в службе или в приложениях IIS.
Исходная версия продукта: Интернет-Обозреватель
Исходный номер базы знаний: 238425
Дополнительные сведения
Так как СЛУЖБЫ IIS являются службой, у вас будет тот же набор проблем, что и при выполнении WinInet в расширении ISAPI или библиотеке DLL-библиотеки COM-ActiveX, используемой active server Pages (ASP) как при запуске WinInet в службе. Запуск WinInet в приложении IIS также имеет уникальный набор проблем.
Проблема с запуском WinInet в службе заключается в том, что WinInet использует параметры из реестра для получения сведений о SSL, сведений о прокси-сервере и многого другого. Службы не загружают HKEY_CURRENT_USER
куст реестра, поэтому эти сведения недоступны.
Предупреждение
Корпорация Майкрософт не поддерживает использование API WinInet в контексте системной службы.
API WinInet сообщают о нарушениях доступа при использовании из службы по протоколу SSL с установленным Интернетом Обозреватель 5.0.
Чтобы понять ограничения, уникальные для использования WinInet в серверной среде, необходимо разобраться в истории WinInet. WinInet был разработан для использования интернет-Обозреватель. Фактически, чтобы использовать более поздние версии WinInet, необходимо загрузить минимальную установку Интернет-Обозреватель. WinInet также предоставляет API для использования другими клиентскими приложениями, которые хотят получить доступ к ресурсам в Интернете (или интрасети). Важно распознавать среду, в которой был разработан и протестирован WinInet, чтобы понять, как правильно использовать библиотеку DLL. WinInet был разработан для использования в клиентской среде. Хотя он по-прежнему выступает в качестве клиента при выполнении в библиотеке DLL ISAPI, в данном случае он выполняется в серверной среде.
Клиентская среда: пользователь, работающий в Интернете Обозреватель
- Относительно небольшое число запросов
- Запросы выполняются относительно последовательно
- Время существования ведущего приложения короткое (продолжительность сеанса браузера)
Серверная среда: веб-сервер (например, https://www.microsoft.com
)
- Большое количество запросов в секунду
- Несколько потоков, выполняющих запросы одновременно
- Должен работать в течение нескольких недель или месяцев
Предпочтительным решением является использование WinHttp, который предназначен для запуска в среде службы, и поскольку это стек HTTP на стороне сервера, он не привязан к двум ограничениям на подключение, налагаемым RFC 2616, что клиентские стеки HTTP. Этот набор API аналогичен использованию WinInet, поэтому знакомым с WinInet будет легко адаптироваться.
Другое решение — использовать сокеты напрямую. Пакет SDK для платформы содержит пример, демонстрирующий использование WinSock по протоколу SSL. Вы найдете пример в папке \Microsoft Platform SDK\Samples\Winbase\Security\Ssl
пакета SDK.
Еще одной проблемой, о которой следует знать при использовании WinInet в серверной среде, является ограничение на два подключения, установленное Интернетом Обозреватель.
Хотя WinInet можно использовать в службе и в серверной среде, она не рекомендуется и не поддерживается корпорацией Майкрософт. WinInet не был протестирован в этой конфигурации, и проблемы существуют.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по