在服務或 IIS 應用程式中不支援 WinInet

從服務或網際網路資訊伺服器 (IIS) 應用程式 ((也是服務) )執行時,不支援從 WinInet.dll) 匯出的 Microsoft Win32 Internet 函數 (。 本文討論如何在服務或 IIS 應用程式中使用 WinInet.dll。

原始產品版本:  Ie
原始 KB 編號:  238425

其他相關資訊

因為 IIS 是一項服務,所以在網際網路伺服器應用程式介面中執行 WinInet 時,會有相同的一組問題 (ISAPI) 擴充,或是在 Active Server 頁面 (ASP) 中使用的 COM DLL ActiveX DLL,如同在服務中執行 WinInet 一樣。 在 IIS 應用程式中執行 WinInet 也會有一組獨特的問題。

在服務中執行 WinInet 的問題是,WinInet 使用登錄中的設定來取得 SSL 資訊、proxy 資訊等等。 服務不會載入登錄 HKEY_CURRENT_USER 蜂巢,所以無法使用此資訊。

警告

Microsoft 不支援在系統服務的內容內使用 WinInet APIs。

WinInet APIs 會在安裝 Internet Explorer 5.0 的 SSL 上使用此服務時,報告存取違規。

為了瞭解在伺服器環境中使用 WinInet 獨有的限制,您必須瞭解 WinInet 的歷程記錄。 WinInet 是開發供 Internet Explorer 使用。 實際上,若要使用更高版本的 WinInet,您必須載入最小的 Internet Explorer 安裝。 WinInet 也會公開 APIs,供其他用戶端應用程式用來存取網際網路 (或內部網路) 上的資源。 請務必辨識已開發和測試 WinInet 的環境,以瞭解 DLL 的適當用法。 WinInet 是為在用戶端環境中使用而開發。 雖然在 ISAPI DLL 中執行的用戶端仍為用戶端,但在此情況下,它會在伺服器環境中執行。

用戶端環境:執行 Internet Explorer 的人員

  • 相對較低的要求數目
  • 相對應連續進行的要求
  • 主機應用程式的存留時間很短 (瀏覽器會話的長度)

伺服器環境:網頁伺服器 (例如 https://www.microsoft.com)

  • 每秒的要求數目上限
  • 多個執行緒同時進行要求
  • 每週或每月必須執行

[!注意] 慣用的解決方案是使用 WinHttp,其設計目的是在服務環境中執行,而且因為它是伺服器端的 HTTP 堆疊,所以不會系結至 RFC 2616 所強加的兩個連線限制(該用戶端的 HTTP 堆疊)。 此 API 集合在使用 WinInet 時類似,因此 WinInet 所熟悉的功能會發現容易修改的方式。

另一種解決方案是直接使用通訊端平臺 SDK 包含示範如何在 SSL 上使用 WinSock 的範例。 您會在 SDK 的資料夾中找到一個範例 \Microsoft Platform SDK\Samples\Winbase\Security\Ssl

在伺服器環境中使用 WinInet 時,另一個要注意的問題是 Internet Explorer 所強加的雙連接限制。

雖然可以在服務和伺服器環境中使用 WinInet,但 Microsoft 不建議也支援它。 WinInet 在此設定中尚未經過測試,而且問題確實存在。