首页 > 解决方案 > 处理 HttpConfiguration 是否安全?

问题描述

我的CA2000分析器(“在失去范围之前处理对象”)告诉我HttpConfiguration在完成自定义 OWin 的IAppBuilder.

我试图做到这一点,并且一切正常。MSDN没有告诉我应该或不应该 dispose的任何内容HttpConfiguration,就像它对 Tasks 所做的那样(“不要费心处理 Task 实例”)。

既然我不想留下一个未处理的实例,就像我不想发现我的 Web 服务器有一天崩溃了,我该怎么办?

编辑,我的部分代码:

public void Configuration(IAppBuilder appBuilder)
{
    EnableCookieAuth(appBuilder);
    UseWebApi(appBuilder);
}

[System.Diagnostics.CodeAnalysis.SuppressMessage("Reliability", "CA2000:Dispose objects before losing scope", Justification = "Handled by ")]
private static void UseWebApi(IAppBuilder appBuilder)
{
    appBuilder.Use<ControlMiddleware>();

    using HttpConfiguration config = new HttpConfiguration();

    config.MapHttpAttributeRoutes();
    appBuilder.UseNinjectWebApi(config);
    config.EnsureInitialized();
}

标签: c#.netasp.net-web-apiowinhttpconfiguration

解决方案


httpConfiguration在owin app中配置有意义的地方,在OnAppDisposing

HttpConfiguration httpConfiguration = new HttpConfiguration();
app.UseWebApi(httpConfiguration);


AppProperties properties = new AppProperties(app.Properties);
CancellationToken token = properties.OnAppDisposing;
if (token != CancellationToken.None)
{
    token.Register(() =>
    {
        httpConfiguration.Dispose();
    });
}

推荐阅读