Wal*_*lly 41 c# asp.net-web-api owin
我使用这些代码片段自我托管OWIN Web API:
class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
var config = new HttpConfiguration();
var route = config.Routes.MapHttpRoute("DefaultApi", "{controller}");
appBuilder.UseWebApi(config);
}
}
WebApp.Start<Startup>("http://localhost:8080")
Run Code Online (Sandbox Code Playgroud)
我想在我的Web API服务关闭时运行一些代码.我正在寻找类似的东西HttpApplication.Application_End,一个Disposed活动,或者一个很好的位置override void Dispose().
如何在Web API服务关闭时运行代码?
小智 64
我认为有更好的方法来获得CancellationToken:
var properties = new AppProperties(app.Properties);
CancellationToken token = properties.OnAppDisposing;
Run Code Online (Sandbox Code Playgroud)
AppProperties在命名空间下Microsoft.Owin.BuilderProperties,来自这个nuget包:http://www.nuget.org/packages/Microsoft.Owin/
财产的描述OnAppDisposing说:
获取或设置"host.OnAppDisposing"的取消标记.
请参阅:http://msdn.microsoft.com/en-us/library/microsoft.owin.builderproperties.appproperties%28v=vs.113%29.aspx
Bri*_*iec 56
这可以通过获取主机的取消令牌并像这样注册回调来实现
public class Startup
{
public void Configuration(IAppBuilder app)
{
var context = new OwinContext(app.Properties);
var token = context.Get<CancellationToken>("host.OnAppDisposing");
if (token != CancellationToken.None)
{
token.Register(() =>
{
// code to run
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
Katana团队的某个人告诉我,此密钥用于特定于主机的功能,因此可能不存在于所有主机上.Microsoft.Owin.Host.SystemWeb确实实现了这一点,但我不确定其他人.
验证这是否会为你工作最简单的方法是检查app.Properties的host.OnAppDisposing重点.
| 归档时间: |
|
| 查看次数: |
12005 次 |
| 最近记录: |