c# – 没有堆栈跟踪的错误详细信息

c# – 没有堆栈跟踪的错误详细信息,第1张

概述在我的MVC WebApi服务中,当抛出异常时,它由过滤器处理: public class GlobalExceptionFilter : ExceptionFilterAttribute { public override void OnException(HttpActionExecutedContext context) { context.Response = co 在我的MVC WebAPI服务中,当抛出异常时,它由过滤器处理:
public class GlobalExceptionFilter : ExceptionFilterattribute {    public overrIDe voID OnException(httpActionExecutedContext context) {        context.Response = context.Request.CreateErrorResponse(httpStatusCode.BadRequest,"Bad Request",context.Exception);    } }

此过滤器生成的此http响应取决于config.IncludeErrorDetailPolicy配置.

如果我将config.IncludeErrorDetailPolicy设置为IncludeErrorDetailPolicy.Always,则所有详细信息都会序列化为http响应(Message,ExceptionMessage,ExceptionType和StackTrace).

如果我将config.IncludeErrorDetailPolicy设置为IncludeErrorDetailPolicy.Never,则仅包含Message.

但是,我想在http响应中包含Message,ExceptionMessage和ExceptionType,但不包括StackTrace;如何只排除StackTrace?或者我应该将所需的详细信息连接到Message字段中?

要在我的问题中添加一些上下文,客户端需要这些异常细节来处理特殊情况……但绝不是堆栈跟踪.

解决方法 谢谢你指出我正确的方向莱昂.您的链接启发了我的解决方案.它保留CreateErrorResponse方法的功能并附加ExceptionMessage和ExceptionType属性.
public class GlobalExceptionFilter : ExceptionFilterattribute {    public overrIDe voID OnException(httpActionExecutedContext context) {        context.Response = context.Request.CreateErrorResponse(httpStatusCode.BadRequest,context.Exception);            var httpError = (httpError)((ObjectContent<httpError>)context.Response.Content).Value;            if (!httpError.ContainsKey("ExceptionType"))                httpError.Add("ExceptionType",context.Exception.GetType().Fullname);            if (!httpError.ContainsKey("ExceptionMessage"))                httpError.Add("ExceptionMessage",context.Exception.Message);    } }
总结

以上是内存溢出为你收集整理的c# – 没有堆栈跟踪的错误详细信息全部内容,希望文章能够帮你解决c# – 没有堆栈跟踪的错误详细信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1248028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存