INFO:HTTP GET 及 HTTP POST 預設為停用

本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將告訴您,在 .NET Framework 1.1 中所做的變更,會影響 Web 伺服器上的 HTTP GETHTTP POST 方法,並且說明有關這個新功能的可行方案。
其他相關資訊
與 .NET 連接的 Web 服務支援 HTTP GET、HTTP POST 及 SOAP 通訊協定。根據預設,在 .NET Framework 1.0 中,這三種通訊協定均設定為啟用。在 .NET Framework 1.1 中,HTTP GET 及 HTTP POST 是預設為停用。這是基於安全性的考量。

當 Web 服務升級至 .NET Framework 1.1 時,使用 HTTP GET 或 HTTP POST 來叫用 Web 服務的應用程式就會失敗。這些應用程式會收到
System.Net.WebException
錯誤訊息,表示無法辨識要求的格式。

請注意,HTML 測試表單是使用 HTTP POST,因此,無法在 .NET Framework 1.1 中使用。下列所述為真 (除了在 localhost 上以外)。

.NET Framework 1.1 定義名為 HttpPostLocalhost 的新通訊協定。根據預設,此新通訊協定為啟用狀態, 並且允許同一部電腦上的應用程式,使用 HTTP POST 要求來叫用 Web 服務。事實上,這是提供給使用 http://localhost (而不是提供給使用 http://hostname) 的 POST URL。這會允許 Web 服務開發人員可以透過同一部具有 Web 服務的電腦,使用 HTML 測試表單來叫用 Web 服務。

當您嘗試從遠端電腦存取 Web 服務時,就會看不到 [叫用] 按鈕。 同時,您會收到下列錯誤訊息:

測試表單只適用於來自本機電腦的要求

可行方案

您可以在具有 Web 服務的電腦中,編輯 vroot 的 Web.config 檔案,以啟用 HTTP GET 及 HTTP POST。下列設定可以啟用 HTTP GET 及 HTTP POST:
<configuration>    <system.web>    <webServices>        <protocols>            <add name="HttpGet"/>            <add name="HttpPost"/>        </protocols>    </webServices>    </system.web></configuration>
或者,您可以編輯 Machine.config 中的 <protocols> 區段,以便啟用電腦上所有 Web 服務的通訊協定。下面的範例可以從 localhost 啟用 HTTP GET、HTTP POST、SOAP 及 HTTP POST:
<protocols>	<add name="HttpSoap"/>	<add name="HttpPost"/>	<add name="HttpGet"/> 	<add name="HttpPostLocalhost"/>      <!-- Documentation enables the documentation/test pages -->	<add name="Documentation"/></protocols>
参考
如需有關 Web 服務設定的詳細資訊,請參閱 .NET Framework 1.1 文件中的 <protocols> 項目: http://msdn2.microsoft.com/en-us/library/ccbk8w5h(vs.71).aspx
HTTP POST GET Unrecognized
內容

文章識別碼:819267 - 最後檢閱時間:12/08/2015 02:36:11 - 修訂: 1.3

Microsoft .NET Framework 1.1

  • kbnosurvey kbarchive kberrmsg kbhowto kbinfo kbhttp kbwebserver kbwebclasses kbhtml KB819267
意見反應