2016年2月3日 星期三

C# Asp.net 利用 winform 控制 web server 記憶體

目前被指派寫一個winform常駐程式,

比對資料庫資料和call總部webservice的回傳值是否有異,

若有則更新資料庫資料。

原本以為定時比對利用timer跑個迴圈比對就沒事了,

結果更新完資料庫資料後,

發現台灣local這邊的網站顯示資料卻沒有更新!!!

Orz....


細查發現公司webform應用程式顯示資料時,

是先看伺服器記憶體中(global.asax記錄了定期更新的資料及最後updatedTime)有無暫存資料,

若有就直接讀取不再浪費連線效能, 

因此我的常駐程式勢必得想辦法重新啟動伺服器記憶體或修改global.asax的最後updatedTime,
想了老半天才發現原來方法沒那麼複雜........想太多.........

在公司webform應用程式中寫一段webserive用來更新global.asax的updatedTime
 (公司是設定一個月前的舊資料就連線資料庫撈資料,再將最新資料儲存伺服器記憶體內),

然後我的常駐winform呼叫此webservice修改updatedTime就可以達成我想要的目的,

就這麼簡單,

程式碼三行完成需求......但這三行卻浪費我想一天,果然太嫩...。


[WebMethod(EnableSession = true)]        
        public void changeUpdateTime()
        {
            HttpContext.Current.Application.Lock();
            Global.dictionaryDom.lastUpdateTime = DateTime.Now.AddYears(-5);
            HttpContext.Current.Application.UnLock();    
        }

沒有留言:

張貼留言