WinInet は、サービスまたは IIS アプリケーションではサポートされていません

警告

廃止され、サポート対象外となった Internet Explorer 11 デスクトップ アプリケーションは、特定のバージョンの Windows 10 で Microsoft Edge の更新プログラムを通じて完全に無効になります。 詳細については、「Internet Explorer 11 デスクトップ アプリの廃止に関する FAQ」をご覧ください。

Microsoft Win32 インターネット関数 (WinInet.dll からエクスポート) は、サービスまたはインターネット インフォメーション サーバー (IIS) アプリケーション (サービス) から実行する場合はサポートされません。 この記事では、サービスまたは IIS アプリケーションで WinInet.dll を使用する方法について説明します。

元の製品バージョン:インターネット エクスプローラー
元の KB 番号: 238425

詳細情報

IIS はサービスであるため、インターネット サーバー アプリケーション プログラム インターフェイス (ISAPI) 拡張機能またはサービスで WinInet を実行する場合と同様に、Active Server Pages (ASP) によって使用される COM DLL-ActiveX DLL で WinInet を実行する場合と同じ問題が発生します。 IIS アプリケーションで WinInet を実行すると、一意の問題も発生します。

サービスで WinInet を実行する場合の問題は、WinInet が SSL 情報、プロキシ情報などのためにレジストリの設定を使用することです。 サービスはレジストリ ハイブを HKEY_CURRENT_USER 読み込まないので、この情報は使用できません。

警告

Microsoft では、System Service のコンテキスト内での WinInet API の使用はサポートされていません。

WinInet API は、インターネット エクスプローラー 5.0 がインストールされている SSL 経由でサービスから使用された場合、アクセス違反を報告します。

サーバー環境での WinInet の使用に固有の制限事項を理解するには、WinInet の履歴を理解する必要があります。 WinInet は、インターネット エクスプローラーで使用するために開発されました。 実際、新しいバージョンの WinInet を使用するには、インターネット エクスプローラーの最小限のインストールを読み込む必要があります。 WinInet では、インターネット (またはイントラネット) 上のリソースにアクセスする他のクライアント アプリケーションで使用する API も公開されています。 DLL の適切な使用方法を理解するために、WinInet が開発およびテストされた環境を認識することが重要です。 WinInet は、クライアント環境で使用するために開発されました。 ISAPI DLL で実行されている場合はクライアントとして動作しますが、この場合はサーバー環境で実行されています。

クライアント環境: インターネット エクスプローラーを実行しているユーザー

  • 要求の数が比較的少ない
  • 比較的連続した要求
  • ホスト アプリケーションの有効期間が短い (ブラウザー セッションの長さ)

サーバー環境: Web サーバー (など https://www.microsoft.com)

  • 1 秒あたりの要求数が多い
  • 要求を同時に行う複数のスレッド
  • 数週間または数か月間実行する必要があります

推奨される解決策は、サービス環境で実行するように設計された WinHttp を使用することです。これはサーバー側の HTTP スタックであるため、クライアント側の HTTP スタックである RFC 2616 によって課される 2 つの接続制限にバインドされません。 この API セットは WinInet の使用方法に似ているため、WinInet に慣れているユーザーは、簡単に適応できます。

もう 1 つの解決策は、ソケットを直接使用することです。プラットフォーム SDK には、SSL で WinSock を使用する方法を示すサンプルが含まれています。 SDK のフォルダーに \Microsoft Platform SDK\Samples\Winbase\Security\Ssl サンプルがあります。

サーバー環境で WinInet を使用する場合に注意する必要があるもう 1 つの問題は、インターネット エクスプローラーによって課される 2 つの接続制限です。

サービスやサーバー環境で WinInet を使用することは可能ですが、Microsoft では推奨もサポートされていません。 WinInet はこの構成でテストされておらず、問題は存在します。