2013-08-20 13 views
0

每當我在IIS上更新我的Web應用程序時,任何正在使用它的用戶都將看到該頁面無響應,並且在刷新瀏覽器之前它將不再工作。 (更新過程持續約30秒)如何檢測頁面何時更新到IIS

我想顯示一條通知,例如javascript警報,讓用戶知道該頁面正在被使用,請嘗試在30秒後刷新頁面,等

我試圖趕上Global.ascx中的例外,但在這種情況下沒有引發異常。

+0

問題似乎是服務器對瀏覽器的響應速度很慢。試圖在服務器上檢測到這一點並不會真的有幫助(爲什麼會更快)。您需要一些可以顯示「服務器響應速度慢」的javascript解決方案,請稍等片刻。 –

+6

會發生什麼情況是Web服務器正在重新編譯您的應用程序,所以很顯然,應用程序本身無法運行服務器端代碼來處理它。 –

+0

我不介意它必須是JavaScript還是代碼隱藏,只要它們是彈出式消息。請你一步一步告訴我如何做到這一點? –

回答

0

您可以在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/

+0

請提供一個例子 –

0

考慮使用app_offline.htm。這是一個會導致客戶端看到您的IIS應用程序關閉的頁面。當您完成更新時,只需移除該頁面即可。

0

大男孩們如何做到這一點:

您需要有一種方法在頁面上發佈警報。通常,這是通過在數據庫中爲這些警報提供一個表來完成的。基本上,你只是在那裏存儲一些文本,如「嘿,網站正在維護之間的上午8:00至上午8:01」..

在每一頁加載,你檢查該表,並顯示任何消息一個顯眼的地方(如頂部)。

在推送更新之前,您添加警報,同時給予他們足夠的時間來結束他們正在做的任何事情。

推送完成後,清除警報表。

老實說,你的主要問題只是調度更新和與用戶溝通即將發生的事情之一。你想這樣做並不意外。也就是說,您可能會考慮啓用optimizeCompilations標誌,以嘗試加速網站在推送更新後首次啓動時的編譯時間。

相關問題