Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Service Soap FaultString显示详细的错误消息,而不是简短的错误消息_Service_Asmx - Fatal编程技术网

Service Soap FaultString显示详细的错误消息,而不是简短的错误消息

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,

我有一个asmx服务和一个抛出soap异常的方法

<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>