使 IIS 应用程序 stall/pause 主机重启 x 秒
Make IIS Application stall/pause host machine reboot for x seconds
我在一些 IIS 网络服务器前面有一个 HaProxy 负载平衡器。 Haproxy 检查特定路径上的 iis 应用程序是否已启动或正在维护。
我想提出一个解决方案,我可以安全地重新启动随机 IIS 机器,然后用它来触发我的 iis 应用程序:
- 对重启作出反应,return特定路径上的特定响应代码(在本例中为 404)
- 暂停主机重新启动 15 秒,以确保所有调用都已处理,并且 haproxy 已经看到此 404 状态代码,表示 iis 服务器即将重新启动。
这两件事有什么办法可以做到吗?
Windows 服务器 2016,.Net 4.7.2
这将不起作用,因为当 IIS 为 运行 Application_End 代码时,所有对 IIS 的调用都将 return "Service unavailable":
protected void Application_End()
{
var log = SystemLogManager.GetLogger(GetType());
try
{
log.Warn("Ending application. Hanging for 15 seconds...");
Thread.Sleep(TimeSpan.FromSeconds(15));
log.Warn("Done end");
}
catch(Exception ex)
{
log.Error("Unexpected error in application end", ex);
}
}
您可以编写一个可以在任何服务器上调用的 powershell 脚本,并且:
- 向设置缓存变量的检查页面发出网络请求"logoffinprogress"
- 检查页面检查缓存变量并响应 404 http 错误代码
- powershell 脚本等待 15 秒,然后重启服务器
- 在服务器重新启动时,iis 正在运行并且检查页面以 http 200 代码响应
希望对您有所帮助
我在一些 IIS 网络服务器前面有一个 HaProxy 负载平衡器。 Haproxy 检查特定路径上的 iis 应用程序是否已启动或正在维护。
我想提出一个解决方案,我可以安全地重新启动随机 IIS 机器,然后用它来触发我的 iis 应用程序:
- 对重启作出反应,return特定路径上的特定响应代码(在本例中为 404)
- 暂停主机重新启动 15 秒,以确保所有调用都已处理,并且 haproxy 已经看到此 404 状态代码,表示 iis 服务器即将重新启动。
这两件事有什么办法可以做到吗?
Windows 服务器 2016,.Net 4.7.2
这将不起作用,因为当 IIS 为 运行 Application_End 代码时,所有对 IIS 的调用都将 return "Service unavailable":
protected void Application_End()
{
var log = SystemLogManager.GetLogger(GetType());
try
{
log.Warn("Ending application. Hanging for 15 seconds...");
Thread.Sleep(TimeSpan.FromSeconds(15));
log.Warn("Done end");
}
catch(Exception ex)
{
log.Error("Unexpected error in application end", ex);
}
}
您可以编写一个可以在任何服务器上调用的 powershell 脚本,并且:
- 向设置缓存变量的检查页面发出网络请求"logoffinprogress"
- 检查页面检查缓存变量并响应 404 http 错误代码
- powershell 脚本等待 15 秒,然后重启服务器
- 在服务器重新启动时,iis 正在运行并且检查页面以 http 200 代码响应
希望对您有所帮助