2013-02-25 152 views
1

遇到肥皂異常問題。 我在asp.net web服務投擲肥皂例外,必須以某種方式獲取異常(XML等格式),在瀏覽器中顯示,像這樣:wsdl肥皂異常

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> 

從Web服務引發異常:

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,這是根據其他答案,我發現正常行爲。我能以某種方式得到瀏覽器,而不是內部錯誤500 XML,也可能通過改變web.config中,IIS設置...

回答

0

不應該這樣

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

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