繁体   English   中英

如何检测何时将页面更新到IIS

[英]How to detect when a page is being update to IIS

每当我在IIS上更新Web应用程序时,任何当前正在使用它的用户都将看到该页面无响应,并且只有刷新浏览器后,该页面才能再次运行。 (更新过程持续约30秒)

我想显示一个通知,例如javascript警报,以使用户知道该页面已被覆盖,请尝试在30秒后刷新页面,等等。

我试图在Global.ascx中捕获异常,但在这种情况下没有引发异常。

您可以在global.ascx中创建FileSystemWatcher ,然后在更新文件时冒泡(例如更新js)异常。 您可以从以下开始:

using System.IO;

namespace WebApplication1
{
    public class Global : System.Web.HttpApplication
    {
        FileSystemWatcher watcher;

        void Application_Start(object sender, EventArgs e)
        {
            // Code that runs on application startup
            watcher = new FileSystemWatcher(this.Context.Server.MapPath("/"));
            watcher.Changed += new FileSystemEventHandler(watcher_Changed);
        }

        void watcher_Changed(object sender, FileSystemEventArgs e)
        {
            //set a value in js file
            FileInfo jsFilesChanged = new FileInfo(Path.Combine(this.Context.Server.MapPath("/"), "scripts", "files_changed.js"));
            using (StreamWriter jsWriter = (!jsFilesChanged.Exists) ? new StreamWriter(jsFilesChanged.Create()) : new StreamWriter(jsFilesChanged.FullName, false))
            {
                jsWriter.WriteLine("var changed_file = \"" + e.Name + "\";");
            }
        }

        //.......
    }
}

然后在客户端代码包括files_changed.js并创建一个周期性的超时通话检查var changed_file 另外,请确保watcher没有收集到垃圾。

一些参考: http : //msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

http://www.developerfusion.com/article/84362/extending-filesystemwatcher-to-aspnet/

考虑使用app_offline.htm 此页面将使客户端看到您的IIS应用程序已关闭。 完成更新后,只需删除页面即可。

大男孩如何做到这一点:

您需要一种在页面上发布警报的方法。 通常,这是通过在数据库中有一个用于这些警报的表来完成的。 基本上,您只是在其中存储一些文本,例如“嘿,该站点将在8:00 am至8:01 am之间关闭进行维护”。

在每次加载页面时,您都要检查该表并显示在明显位置(如顶部)找到的所有消息。

在推送更新之前,您需要添加警报,同时给他们足够的时间来总结他们所做的一切。

推送完成后,您清除警报表。

坦白说,您遇到的主要问题只是安排更新并与用户交流即将发生的事情之一。 您想要这样做并不奇怪。 也就是说,您可以考虑启用optimizeCompilations标志,以便在推送更新后首次点击时尝试加快网站的编译时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM