wustguangh |分类标签:Web, ASP.NET 2015-01-30

WebService远程无法执行的问题

WebService对应的.asmx文件可以正常访问,但是无法执行,而在本机是可以执行的,这是什么原因?

满意答案

wustguangh 19级 2015-01-30 19:25:36

默认IIS不允许远程计算机直接执行WebService,你需要在web.config文件进行如下配置:

  <system.web>
    <webServices>
      <protocols>
        <add name="HttpSoap"/>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
      </protocols>
    </webServices>
  </system.web>
</configuration>

即在configuration中增加system.web节点,子节点webServices中定义protocols,在其中定义webService的访问方式。

其他回答(1)

wustguangh 19级 2015-01-30 19:27:45

Question:

  WebService部署成站点之后,如果在本地测试webservice可以运行,在远程却显示“测试窗体只能用于来自本地计算机的请求”或者"The test form is only available for requests from the local machine. ",

Reason:

  那是因为没有开启远程访问的原因。

Solutions:

在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--从配置文件的范围内移除用来处理请求和响应数据的指定协议。

相关知识

相关文章更多