wsdl肥皂异常

时间:2013-02-25 09:10:53

标签: asp.net web-services soap

遇到肥皂异常问题。 我在asp.net web服务中抛出soap异常,并且必须以某种方式获得在浏览器中显示的异常(以xml的形式),如下所示:

SOAP 1.1
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault><faultcode>soap:Client</faultcode>
<faultstring></faultstring>
<detail>
<Error>
<ErrorNumber>1</ErrorNumber>
<ErrorMessage>Error...</ErrorMessage>
</Error>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>

从网络服务中抛出异常:

XmlDocument doc = new XmlDocument();
XmlNode detailNode = doc.CreateNode(XmlNodeType.Element, SoapException.DetailElementName.Name, SoapException.DetailElementName.Namespace);
XmlElement details = doc.CreateElement("Error");

XmlElement detailchild1 = doc.CreateElement("ErrorNumber");
detailchild1.InnerText = "1";
XmlElement detailchild2 = doc.CreateElement("ErrorMessage");
detailchild2.InnerText = "Error...";
details.AppendChild(detailchild1);
details.AppendChild(detailchild2);

detailNode.AppendChild(details);

throw new SoapException("Fault", SoapException.ClientFaultCode, "", details);

如果我使用调用该服务的Windows应用程序测试它,我可以捕获异常并提取所有细节,因此似乎一切都适用于创建xml和抛出异常。 但我从浏览器获得的是内部错误500,根据其他答案,我发现了正常的行为。我可以以某种方式在浏览器中获取该xml而不是内部错误500,可能通过更改web.config,IIS设置......

1 个答案:

答案 0 :(得分:0)

不应该这个

throw new SoapException("Fault", SoapException.ClientFaultCode, "", details);

throw new SoapException("Fault", SoapException.ClientFaultCode, "", detailNode);

相关问题