gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:56:51 37 4
gpt4 key购买 nike

我有一个 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> 

但我想要的只是传递给 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;
}

我没有看到任何可以将故障字符串限制为我发送的错误,而不是向其添加堆栈跟踪信息。有人可以帮我解决这个问题吗?我尝试更改 soapException 类的构造函数以仅传递错误消息和故障代码,但这似乎没有帮助。

最佳答案

当 customErrors 功能设置为 Off 或 RemoteOnly* 时,ASP.Net 会自动包含异常详细信息,例如异常名称和堆栈跟踪。为了改变这一点,你需要像这样改变你的 web.config:

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

进行此更改后,您应该会看到预期的 <faultstring></faultstring>


* 如果将 customErrors 设置为 RemoteOnly,将在本地生成详细消息,但如果请求来自远程计算机,将发送不太详细的版本。

关于service - Soap FaultString 显示详细的错误消息而不是简短的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19528224/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com