Безопасно ли удалять 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();
});
}