Startup.cs是一种新的初始化应用程序的方法,而不是全局初始化Application_Start.尽快,很好.但有没有一个地方可以放置我的撕裂逻辑,例如:

public class WebApiApplication : System.Web.HttpApplication
{
  protected void Application_End()
  {
    // Release you ServiceBroker listener
    SqlDependency.Stop(connString);
  }
}

查看了Microsoft.Owin个命名空间,但似乎只有OwinStartupAttribute个.这是否意味着应用程序生命周期事件仍然由System.Web.HttpApplication实例处理,并且不受OWIN规范的支持?

推荐答案

AppProperties,发现于Microsoft.Owin.BuilderProperties,expose 了OnAppDisposingCancellationToken.

你可以拿到这个token,然后注册一个callback

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        var properties = new AppProperties(app.Properties);
        CancellationToken token = properties.OnAppDisposing;
        if (token != CancellationToken.None)
        {
            token.Register(() =>
            {
                // do stuff
            });
        }
    }
}

Asp.net相关问答推荐

授权错误错误 400:C# 上的 redirect_uri_mismatch

.net 中的 [] 括号是什么?

逐步 ASP.NET 自动构建/部署

在 aspx 页面中使用 if else 和 eval

业务线应用程序:F# 会让我的生活变得轻松吗?

SameSite 属性如何自动添加到我的 Asp.net_SessionID cookie 中?

在属性中实现逻辑是一种好习惯吗

GridView 与嵌套类的属性绑定

在不知道键名的情况下访问 JSON 对象的元素

Asp.net 中的下拉列表验证使用必填字段验证器

使用 LINQ 进行递归控制搜索

IIS 会话超时与 ASP.NET 会话超时

在 Visual Studio 2010 Professional 中找不到请求的 .Net Framework 数据提供程序

如何在 ASP.NET MVC 中启用跨源请求

web.config 中与 targetFramework 相关的配置错误

Cache.Add 绝对过期 - 是否基于 UTC?

ASP.Net 无法创建/卷影复制

使 WCF Web 服务与 GET 请求一起工作

在 ASP.NET 标识中添加角色

将 C# ASP.NET 数组传递给 Javascript 数组