.NET Framework 1.1中请求被拒绝的解决办法

来源:互联网 发布:java读取xlsx文件 编辑:程序博客网 时间:2024/05/21 10:32
.NET Framework 1.1中请求被拒绝的解决办法
===========================================================

 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;819267

概要

本文讨论 .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>
  
原创粉丝点击