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 次 |
最近记录: |