Безопасно ли утилизировать HttpConfiguration? - PullRequest
0 голосов
/ 26 октября 2019

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

I IOwin. попытался сделать именно это, и все работает нормально. 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 Ответ

1 голос
/ 26 октября 2019

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