抛出SoapException不会返回有效的SOAP响应

本文关键字:SOAP 响应 有效 返回 SoapException 抛出 | 更新日期: 2023-09-27 18:08:28

我在一个旧的网站工作。它正在调用ASP。Net web服务(旧的.asmx文件)。每当在web服务中发生异常时,它将抛出SoapException。客户端捕获了这个异常,但是不能处理它。

我正在使用FiddlerSOAP UI查看SOAP请求和响应,并阅读本文http://msdn.microsoft.com/en-us/library/aa480514.aspx,我希望得到以下格式的响应:

<soap:Fault>
<faultcode>soap:Server</faultcode>    
<faultstring>Server was unable to process request. Something bad happened</faultstring>
<detail />

然而,我只是得到以下响应:

HTTP/1.1 500 Internal Server Error
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 12 Jun 2014 05:27:14 GMT
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: text/plain; charset=utf-8
Content-Length: 164
Connection: Close
System.Web.Services.Protocols.SoapException: Something bad happened
   at WebService1.Service1.HelloWorld() in ...

我认为这是客户端无法处理异常的原因。

即使在示例Hello World web服务中也会发生这种情况。

怎么了?

更新:当我调用不抛出异常的web服务方法时,我将得到以下格式的响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ords="http://mydomain.com/">
   <soapenv:Header/>
   <soapenv:Body>
      ...
   </soapenv:Body>
</soapenv:Envelope>

这就是我抛出SoapException的方式:

[WebMethod]
public string HelloWorld()
{
     throw new SoapException("Something bad happened", SoapException.ClientFaultCode);
     //return "Hello World";
}

抛出SoapException不会返回有效的SOAP响应

我在web service web中发现了一些httphandler和模块。根本没有使用的配置文件。删除这些错误解决了问题,现在我在响应中得到了正确的XML SOAP错误。