gpt4 book ai didi

asp.net-mvc - 注册 IExceptionLogger OWIN 与 WebApiConfig

转载 作者:行者123 更新时间:2023-12-03 04:33:33 26 4
gpt4 key购买 nike

我们有一组使用 WebApi 2 开发的 RestFul 服务。这些服务将托管在 Azure 上。我有一个 IExceptionLogger 的实现来记录所有未处理的异常。

记录器可以按如下方式在管道中注册

    public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
//Register the ExceptionLogger
config.Services.Add(typeof(IExceptionLogger), new UnhandledExceptionLogger());

config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}

或者可以将其设置为 Owin 中间件,如下所示

public static class SetupExceptionHandlers
{
public static IAppBuilder SetupFilters(this IAppBuilder builder, HttpConfiguration config)
{
config.Services.Add(typeof(IExceptionLogger), new UnhandledExceptionLogger());

return builder;
}
}

然后在管道中注册如下

    public class Startup
{
public void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
app.SetupFilters(config);
app.UseStageMarker(PipelineStage.Authenticate);
}
}

尝试了解更好/正确的方法是什么。我已经以两种方式注册了它,但没有看到行为有任何差异。我也尝试过同时保留这两个注册,但它仍然有效(没有异常(exception))。

最佳答案

使用这两种方法都没有直接的好处(例如,无论哪种方式都不能使用 DI,并且管道行为不会发生任何变化)。

显然,创建处理程序扩展方法可以让您拥有更干净且更易于维护的代码。特别是如果您要分发中间件。

关于asp.net-mvc - 注册 IExceptionLogger OWIN 与 WebApiConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32188681/

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