【问题标题】:Is there a way to gracefully shutdown an ASP.NET WebApi?有没有办法优雅地关闭 ASP.NET WebApi?
【发布时间】:2023-01-23 06:57:30
【问题描述】:

我在 IIS 上运行 ASP.NET Web 应用程序 (4.72)。 有什么办法可以优雅地关闭 web api 吗?

恢复数据库备份后,我想关闭应用程序或重新启动机器。

【问题讨论】:

  • 请优雅地定义你的意思。除了崩溃之外,我希望所有关机都是正常的!您想在哪里启动此关闭,为什么?您的问题没有包含足够的信息,任何人都无法回答。
  • 优雅是谈论关机时的常用术语,是的,这对我来说意味着不会崩溃。我真的不明白缺少什么信息。是否可以关闭 api?也许我应该考虑加倍努力并解决关闭应用程序的需要..
  • @AvrohomYisroel gracefully 是一个非常具体的术语。它不需要定义,不,应用程序不会正常关闭,除非你付出足够的努力让它们这样做
  • 作为一般规则,如果网站正在运行并且与数据库有实时连接,那么我非常怀疑您能否在网站运行时恢复数据库。正如所指出的,您需要暂停/停止该网站。然后您可以执行数据库还原,然后重新启动站点。当然,这种类型的操作将很少见,每 5 年一次,所以我看不出有什么理由将这种过程自动化???如果您需要更新数据库(并且希望不进行完全恢复,那么您当然可以运行/拥有/应该/使用一些更新数据库的脚本。

标签: c# asp.net


【解决方案1】:

是的。您停止应用程序的 IIS 应用程序池。您可以在 IIS 管理器中手动执行此操作,也可以使用 Stop-WebAppPool PowerShell cmdlet 以编程方式执行此操作。它将允许任何正在进行的请求完成,然后关闭。

如果您的应用程序在关闭之前需要做任何事情,您可以在 Global.asax 中定义 Application_End 事件:

public void Application_End() {
   //Wrap up
}

【讨论】:

    猜你喜欢
    • 2016-03-25
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2020-02-13
    相关资源
    最近更新 更多