gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:23:22 24 4
gpt4 key购买 nike

我正在构建一个 RESTful API,我想控制向消费者输出的所有可能的内容。我正在实现一个 ExceptionFilterAttribute 来过滤 Controller 中引发的所有异常。然而,这并不能让我控制在到达 Controller 代码之前应用程序中可能发生的错误,例如路由错误。默认行为发送回一个标准的序列化 HttpError,这给了我太多的内部信息,例如 Controller 类名等。我想避免这种情况。改变这种行为的最佳方法是什么?

最佳答案

您可以添加一个 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。如果没有,您可以用它做一些事情 - 记录,或者重置响应的内容以隐藏您想要隐藏的任何内容。

关于asp.net-mvc - 捕获路由错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14385875/

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