2013-10-22 39 views
1

我有一個asmx服務和一個引發soap異常的方法。問題是當發生異常時,我得到以下錯誤字符串。Soap FaultString顯示詳細的錯誤信息而不是短的錯誤

<faultstring>System.Web.Services.Protocols.SoapException: Error occurred at CustomServices.Application.TestService.ThrowSoapException(XmlNode ErrorNode) at CustomServices.Application.TestService.MyMethod(String param1, String param2, String param3)</faultstring> 

但我想要的只是我傳遞給SoapException構造函數的字符串「Error Occurred」。事情是這樣的

<faultstring>Fault occurred</faultstring> 

的作品現在的問題是,我可以設置自定義錯誤模式上,它並只顯示短消息,但是我想知道是否有這樣做的任何其他方式的一個選項並在代碼本身中阻止它,而不是更改配置文件的自定義模式。以下是我的代碼拋出的,而不是添加堆棧跟蹤信息給它的SOAP異常

public void WebServiceExceptionHandler(XmlNode node) 
    { 
     System.Xml.XmlDocument Xmldoc; 
     System.Xml.XmlNode xmlNode; 
     try 
     { 
      Xmldoc = new System.Xml.XmlDocument(); 
      xmlNode= doc.CreateNode(XmlNodeType.Element, SoapException.DetailElementName.Name, SoapException.DetailElementName.Namespace); 

      //my detaild error node to be displayed. 
      XmlNode errorNode= Xmldoc.ImportNode(node, true); 
      xmlNode.AppendChild(errorNode); 
      //Throw the exception.  
      SoapException se = new SoapException("Error Occurred", SoapException.ServerFaultCode, Context.Request.Url.AbsoluteUri, xmlNode); 
      throw se; 
     } 

我DONOT看到任何可以限制我送的faultstring只是錯誤。有人可以幫我解決這個問題。我試着改變soapException類的構造函數來傳遞錯誤消息和錯誤代碼,但這似乎沒有幫助。

回答

1

當customErrors功能設置爲Off或RemoteOnly *時,ASP.Net自動包含異常詳細信息,例如異常名稱和堆棧跟蹤。爲了改變這一點,你需要改變你的web.config中像這樣:

<configuration> 
    <system.web> 
     <customErrors mode="On" /> 
    </system.web> 
</configuration> 

一旦你做出這種改變,你應該看到您的預計<faultstring></faultstring>


* 如果的customErrors設置爲僅限遠程詳細消息將在本地生成,但如果請求來自遠程機器,則會發送較不詳細的版本。

相關問題