这是我使用Exception.Message
时得到的:
System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.NullReferenceException:对象引用未设置为对象的实例。在WebService.ProcessRequestArc中...... ---内部异常堆栈跟踪结束---
是否可以配置Web应用程序,以便例外仅在我的示例中发送粗体部分?
或者您知道仅提取该部分的方式吗?
答案 0 :(得分:0)
我一开始并不太了解你的问题。为了避免看到堆栈跟踪,您只需显示Server.GetLastError().Message
。在进一步检查时,我发现您的问题是异常被包装到 HttpException 中,而来自 HttpException的消息将方法信息与原始异常消息连接起来。
在 web.config 中,您需要添加自定义错误部分。
<customErrors defaultRedirect="Error.aspx"
mode="On" redirectMode="ResponseRewrite">
在 Error.aspx 中,您可以执行以下操作来检查它是否是 HttpException ,如果是,则获取内部异常的消息。
var ex = Server.GetLastError();
string message;
if (ex != null)
{
message = ((ex is HttpException || ex is SoapException) && ex.InnerException != null)
? ex.InnerException.Message : ex.Message;
}
else
{
message = "An error has occurred.";
}
Response.Write(message);
在您的页面上,您只想显示 Server.GetLastError()。消息。
这是除以零错误之前和之后:
对于 SoapException 实际上,InnerException属性不是null,那么你需要抛出一个带有实际异常的SoapException。
以下是MSDN中有关customErrors部分和错误处理的一些链接:
答案 1 :(得分:0)
异常的Message
属性不遵循任何模式。特别是,Message
属性将根据当前文化设置(语言)而有所不同。
但即使您只关心单一语言,也不应该依赖Message
属性中的任何内容。它只包含抛出异常的开发人员认为您可能想要查看的内容。
特别是不包含您应向用户展示的任何内容!