加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 捕获路由错误

发布时间:2020-12-16 03:34:34 所属栏目:asp.Net 来源:网络整理
导读:我正在构建RESTful API,我想控制所有可能的输出给我的消费者.我正在实现ExceptionFilterAttribute来过滤控制器中引发的所有异常.但是,这并不能让我控制在到达控制器代码之前我的应用程序中可能发生的错误 – 例如路由错误.默认行为发回标准的序列化HttpError
我正在构建RESTful API,我想控制所有可能的输出给我的消费者.我正在实现ExceptionFilterAttribute来过滤控制器中引发的所有异常.但是,这并不能让我控制在到达控制器代码之前我的应用程序中可能发生的错误 – 例如路由错误.默认行为发回标准的序列化HttpError,给出了太多内部信息,比如控制器类名等.我想避免这种情况.改变这种行为的最佳方法是什么?

解决方法

您可以添加MessageHandler来执行此操作.
MessageHandlers首先在管道中运行,允许您处理原始传入请求和原始传出响应.

例如:

public class ErrorHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,CancellationToken cancellationToken)
    {
        var response = await base.SendAsync(request,cancellationToken);

        if (!response.IsSuccessStatusCode)
        {
                Debug.WriteLine("something happened! - " + response.ReasonPhrase);
        }

        return response;
    }
}

然后在GlobalConfiguration中注册

config.MessageHandlers.Add(new ErrorHandler());

这基本上检查了传出响应,并检查状态代码是否为2xx.如果没有,你可以用它做点什么 – 记录,或者重置响应的内容以隐藏你想要隐藏的内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读