【问题标题】:How to hit a method as soon as my IIS gets restart automatically如何在我的 IIS 自动重新启动后立即使用方法
【发布时间】:2016-06-21 10:03:58
【问题描述】:

我有一个应用程序,它通过串行端口在单击 go 按钮时发送连续数据,并托管在 IIS 中。

我已将自动启动模式设置为“始终运行”,这将自动重新启动我的 IIS,但重新启动会停止通过端口发送数据,因为我需要再次单击开始按钮以开始发送数据。

有没有设置自动重启IIS会命中我的Go方法,并且可以通过端口连续发送数据而不会中断。

【问题讨论】:

  • 为什么不在 Windows 服务中托管这个逻辑?
  • @CodeCaster 我已经在 Web 应用程序中进行了设计和开发。现在的问题是发送连续数据,其中 IIS 重新启动会出现问题,因为重新启动需要点击 go 方法。我可以在我的 .Net 应用程序中对其进行编码吗?这个设置在重新启动 IIS 时会命中 go 方法。
  • 嗯,是的,但这就像问"I bought a motorcycle to transport cows, now why can't I transport more than one?"。应用程序池回收和重新启动是您不应在 Web 服务器中托管长时间运行(尤其是永久运行)进程的第一大原因。你为这项工作选择了错误的工具。
  • 是的..我同意,但为了解决问题,IIS 中是否有任何设置,重新启动可以达到我的 go 方法

标签: asp.net iis iis-7 iis-8


【解决方案1】:

为了在应用程序池启动时执行某个方法,您可以使用System.Web 程序集的PreApplicationStartMethod 属性。

[assembly: PreApplicationStartMethod(
              typeof(Starter), 
              nameof(Starter.PreApplicationStartMethod))]

public class Starter 
{
    public static void PreApplicationStartMethod()
    {
         // startup code here
    }
}

有了这个属性,每次应用池回收时,都会调用这个方法。请注意,在回收期间,应用程序池在其他应用程序结束之前启动。请参阅IIS Process Recycling overlap 了解更多信息。

【讨论】:

    猜你喜欢
    • 2018-02-09
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 2012-05-24
    • 1970-01-01
    相关资源
    最近更新 更多