问题:
今天上
午,WebService部署成站点之后,如果在本地测试webservice可以运行,在远程却显示“测试窗体只能用于来自本地计算机的请求”或
者"The test form is only available for requests from the local machine.
",
原因:
大家都知道,Web服务做好后,发布在网上,别人要调用你提供的接口时,是无法打开测试窗体的,这让很多的朋友都蛮郁闷,为什么别人提供的服务接口就能够打开测试窗体,而我的就不行呢?是不是我的代码写的有问题呢?那是因为没有开启远程访问的原因。
解决:
在web.config的<system.web></system.web>中间加入如下配置节内容
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
分析:
以下说明来自MSDN:
protocols 元素指定 ASP.NET Web
服务可用来接收从客户端发送来的请求数据和返回响应数据的协议。协议可用来将请求数据与方法及其参数关联起来,将响应数据与方法及其返回值关联起来。默认
情况下,仅启用 HttpSoap 和 Documentation。若要使用 HttpPost 和
HttpGet,需要按照上面的示例所显示的那样启用它们。
protocols 的子元素有(add,clear,remove)
add--添加 ASP.NET Web 服务可用来接收从客户端发送来的请求数据和返回响应数据的指定协议。默认情况下,仅启用 HttpSoap 和 Documentation。
clear--从配置文件的范围内移除所有的协议。
remove--从配置文件的范围内移除用来处理请求和响应数据的指定协议。