WebRequest + Https + 憑証錯誤 = 作業逾時

前言

一般的系統一登入時,都會顯示公告訊息,我們的系統也是! 因為系統效能問題,所以就幫忙看了程式。發現,每次登入時,都會到DB取公告資料,但公告並不會因為個人而有所不同,是針對整個系統的呀! 所以就建議將資料放到Application之中,然後在維護公告的那支程式中,再去將放在Application中的公告資料給清掉。

但是因為我們的系統有4台Web AP做Load Balance,所以會導致只有操作維護公告那台Web AP會被清掉,其他3台還是舊的資料。

實作

有想到2種方式,1是公告調整時,再去寫For各AP的一個Flag,然後各AP去讀取它,然後再Update那個Flag。2是公告內容調整時,要呼叫各AP把資料把Application清掉。

因為原本的效能問題就是因為DB太累了,所以就使用第2種方式,呼叫各Web AP的一支程式來做。

Dim strURL as string = "http://MySystem/ResetAP.aspx"
Dim req as System.Net.WebRequest = System.Net.WebRequest.Create(strURL)
req.Timeout = 500
Dim rsp as System.Net.HttpWebResponse = Ctype(req.GetResponse(), System.Net.HttpWebResponse)
rsp.close
Response.Write("OK!")

在公司測試都OK,但是上到了客戶端卻發生了「作業逾時」的錯誤,請User直接在Web AP上直接Run ResetAP.aspx,User說是可以Run的呀! 奇怪!

image

於是直接到客戶端去看,原來是因為https時,憑証有問題,它會先問User要不要繼續下去。當使用程式去Run時,沒有人去按,所以它就會一直卡在那裡,就作業逾時了!

image

知道這個原因後,程式中就改用http,避掉這個問題

posted @ 2013-07-02 13:26  Nina  阅读(338)  评论(0编辑  收藏  举报