Безопасно ли удалять HttpConfiguration?

Мой анализатор CA2000 ("Утилизируйте объекты перед потерей области видимости") говорит мне избавиться отHttpConfiguration экземпляр, как только я закончу настройку OWin IAppBuilder.

Я попытался сделать именно это, и все работает подозрительно нормально. MSDN ничего не говорит о том, следует или не следует избавлятьсяHttpConfiguration, так же хорошо, как он говорит, скажем, о задачах ("не беспокойтесь об удалении экземпляров задач").

Поскольку я не хочу оставлять экземпляр нераспределенным, как и не хочу, чтобы мой веб-сервер однажды вышел из строя, что мне делать?

Изменить, часть моего кода:

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();
}

1 ответ

Решение

Место, которое имеет смысл утилизировать httpConfiguration в приложении owin находится в 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();
    });
}
Другие вопросы по тегам