Service Soap FaultString显示详细的错误消息,而不是简短的错误消息
我有一个asmx服务和一个抛出soap异常的方法Service Soap FaultString显示详细的错误消息,而不是简短的错误消息,service,asmx,Service,Asmx,我有一个asmx服务和一个抛出soap异常的方法 <faultstring>System.Web.Services.Protocols.SoapException: Error occurred at CustomServices.Application.TestService.ThrowSoapException(XmlNode ErrorNode) at CustomServices.Application.TestService.MyMethod(String param1,
<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>
我没有看到任何可以将faultstring限制为我发送的错误,而不是将堆栈跟踪信息添加到其中的内容。谁能帮我一下吗。我尝试更改soapException类的构造函数,以便只传递错误消息和故障代码,但这似乎没有帮助。ASP.Net在customErrors功能设置为Off或RemoteOnly*时自动包含异常详细信息,如异常名称和堆栈跟踪。要更改此设置,您需要更改web.config,如下所示:
<configuration>
<system.web>
<customErrors mode="On" />
</system.web>
</configuration>
进行此更改后,您应该会看到预期的
*如果customErrors设置为RemoteOnly,则本地将生成详细消息,但如果请求来自远程计算机,则将发送不太详细的版本
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;
}
<configuration>
<system.web>
<customErrors mode="On" />
</system.web>
</configuration>