c# - 处理 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();
}
解决方案
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();
});
}
推荐阅读
- google-cloud-platform - Ubuntu Compute Engine VPS 上的 Google Cloud IKEv2 VPN
- javascript - 如何在对话流中使用异步函数?
- javascript - required 属性不适用于按钮
- javascript - 如何在画布中的边界矩形底部放置一个按钮
- windows - 为什么 for 循环中的单个 % 在命令行中没有被解释为环境变量,而是在批处理文件中?
- django - Django 找不到 JS 静态脚本
- scala - Play Framework: value withPrefix 不是 api.ApiRouter 的成员
- json - 尝试从 React 前端向 Flask 后端发出 POST 请求时出现 404
- r - 在 R 中结合 For 和 If 循环
- c - 我正在尝试使用 openssl 对字符串进行 base64 解码,但返回的字符串无效