如何设置.NET 4.0 Web服务以供本地网络上的其他计算机使用?

时间:2011-08-15 18:17:21

标签: .net web-services soap iis-7

我使用.Net 4.0框架编写了一个Web服务,在将应用程序发布到IIS中的网站后,我可以使用本地计算机上的测试客户端(SoapUI)成功调用它。生成的存根和WSDL可以从本地机器和网络上的其他机器访问,但是我无法从另一台机器发布到WS端点;我可以从本地计算机发布到WS端点并获得预期的响应。当我尝试发布到我的WS端点时,我收到HTTP 400错误 - “HTTP错误400.请求格式错误”在HTML中。这是我的IIS配置或我的应用程序文件的访问权限的问题吗?

注意:Java开发人员在这里学习.Net。

编辑:我已禁用Windows防火墙,并且我在IIS管理器中将网站绑定IP地址设置为“所有未分配”。

编辑:请求/回复

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:add="http://mymachinenamewashere/SeflAddressService/AddressService.asmx">
   <soapenv:Header/>
   <soapenv:Body>
     <add:CheckAddress>
         <add:chkAddress>
           <add:chkCompanyName>XXX</add:chkCompanyName>
           <add:chkStreet1>420 Davega Rd.</add:chkStreet1>
           <add:chkStreet2/> 
           <add:chkCity>Lexington</add:chkCity>
           <add:chkState>SC</add:chkState>
           <add:chkZipcode5>29169</add:chkZipcode5>
           <add:chkZipcode4/>
           <add:chkSuite/>
         </add:chkAddress>
      </add:CheckAddress>
   </soapenv:Body>
</soapenv:Envelope>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request</h2>
<hr><p>HTTP Error 400. The request is badly formed.</p>
</BODY></HTML>

2 个答案:

答案 0 :(得分:0)

可能的错误:

  • 绑定到特定IP的Web服务
  • 防火墙配置
  • 身份认证?

您是否检查过SOAP请求和响应?

答案 1 :(得分:0)

问题是我的客户端和SoapUI v2.5在没有命名空间的情况下创建了错误的请求。我终于想出了在哪里找到日志文件并使用Wireshark捕获了一些请求。升级到SoapUI v4.X,它工作正常。我正在修改我的客户端以包含命名空间(用于生成我的客户端代码的框架似乎无法正常工作或未正确配置)。