你目前正处于脱机状态,正在等待 Internet 重新连接

INFO:默认情况下禁用 HTTP GET 和 HTTP POST

概要
本文讨论 .NET Framework 1.1 中影响 Web 服务器上的 HTTP GET 方法和 HTTP 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,因此,基于 HTML 的测试窗体在 .NET Framework 1.1 中不适用。除非该窗体在下面提到的本地主机上,否则情况都是如此。

.NET Framework 1.1 定义了一个名为 HttpPostLocalhost 的新协议。默认情况下,这个新协议处于启用状态。该协议允许从与使用 HTTP POST 请求的 Web 服务位于同一计算机上的应用程序调用该服务。允许的前提条件是:POST URL 使用 http://localhost,而不是 http://hostname。这使得 Web 服务开发人员可以使用基于 HTML 的测试窗体,从 Web 服务所在的同一计算机调用该 Web 服务。

当您尝试从远程计算机访问 Web 服务时,不会显示“调用”按钮。并且,您会收到以下错误信息:

The test form is only available for requests from the local machine

替代方法

通过编辑 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 服务启用这些协议。下面的示例启用了 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
属性

文章 ID:819267 - 上次审阅时间:05/16/2007 05:37:00 - 修订版本: 1.2

  • Microsoft .NET Framework 1.1
  • kberrmsg kbinfo kbhttp kbwebserver kbwebclasses kbhtml KB819267
反馈