環(huán)境說(shuō)明:
開發(fā)平臺(tái)是DOTNET B/S .NET Framework 1.1
正式WEB服務(wù)器和測(cè)試機(jī),均為win2003
原有一個(gè)主網(wǎng)站,在六臺(tái)WEB服務(wù)器做負(fù)載均衡。運(yùn)行比較穩(wěn)定。
現(xiàn)新開發(fā)一個(gè)子站,將布署在另三臺(tái)WEB服務(wù)器上做負(fù)載均衡。這個(gè)負(fù)載均衡設(shè)置類似主網(wǎng)站的設(shè)置。
解決步驟:
1)子站在測(cè)試機(jī)測(cè)試通過(guò),運(yùn)行正常。準(zhǔn)備布署到正式環(huán)境下(三臺(tái)WEB服務(wù)器)
2)將子站程序拷貝到那三臺(tái)WEB服務(wù)器上,配置好子站相關(guān)配置,開放站點(diǎn)與負(fù)載均衡開始測(cè)試。
3)測(cè)試時(shí),頁(yè)面顯示正常,但在觸發(fā)服務(wù)端事件時(shí)出現(xiàn)異常。
錯(cuò)誤信息“Viewstate is invalid for this page”(此頁(yè)的視圖狀態(tài)無(wú)效)沒(méi)有為解決此問(wèn)題提供足夠信息
同樣的程序?yàn)楹卧跍y(cè)試機(jī)運(yùn)行沒(méi)問(wèn)題,放到正式環(huán)境下,就出現(xiàn)異常呢?
在微軟網(wǎng)站要查到這個(gè)異常的解釋(http://support.microsoft.com/default.aspx?scid=kb;zh-cn;831150),說(shuō)建議安裝Microsoft .NET Framework 1.1 Service Pack 1。
于是,懷疑沒(méi)有裝這個(gè)補(bǔ)丁,就查看注冊(cè)表項(xiàng):
項(xiàng)名稱:HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322
SP值為0,表明沒(méi)有裝Framework 1.1 Service Pack,
然后去微軟網(wǎng)站下載了.NET Framework 1.1 Service Pack 1和.NET Framework 1.1 Service Pack 1 ASP.NET 安全更新 - Windows Server 2003
4)裝上這兩個(gè)補(bǔ)丁后,運(yùn)行子站程序,在觸發(fā)服務(wù)端事件時(shí)仍舊出現(xiàn)異常。異常如下:
異常詳細(xì)信息:System.Web.HttpException: 無(wú)法驗(yàn)證數(shù)據(jù)。
堆棧跟蹤:
以下為引用的內(nèi)容:
[HttpException (0x80004005): 無(wú)法驗(yàn)證數(shù)據(jù)。]
[HttpException (0x80004005): Authentication of viewstate failed. 1) If this is a cluster, edit configuration so all servers use the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 2) Viewstate can only be posted back to the same page. 3) The viewstate for this page might be corrupted.]
再回到831150那篇文章看:“應(yīng)用此修復(fù)程序后,視圖狀態(tài)錯(cuò)誤信息標(biāo)題將變成“Unable to Validate Data”。盡管新的錯(cuò)誤信息格式?jīng)]有對(duì)問(wèn)題進(jìn)行具體描述,但它比以前的錯(cuò)誤信息格式提供了更多信息。”
得知應(yīng)該是ViewState值已被截?cái)???/p>
問(wèn)題就轉(zhuǎn)化:什么原因?qū)е?quot;ViewState值已被截?cái)?quot;呢?
因?yàn)槌绦蛟跍y(cè)試環(huán)境下運(yùn)行沒(méi)問(wèn)題的,那么可能是系統(tǒng)級(jí)的問(wèn)題。
比較一下正式和測(cè)試環(huán)境:正式環(huán)境是三臺(tái)Server做負(fù)載均衡,而測(cè)試環(huán)境只一臺(tái)Server。
5)將負(fù)載均衡設(shè)置修改了一下,只開放一臺(tái)WEB Server。測(cè)試后,發(fā)現(xiàn)不出現(xiàn)那個(gè)異常。三臺(tái)機(jī)分別測(cè)試,均無(wú)異常。
推測(cè):可能是負(fù)載均衡設(shè)置有問(wèn)題。于是找來(lái)系統(tǒng)管理員,他說(shuō),子站的負(fù)載均衡設(shè)置跟主站一樣的啊。但還是請(qǐng)他再確認(rèn)一下兩個(gè)負(fù)載均衡設(shè)置的不同之處。
經(jīng)再次的仔細(xì)檢查,發(fā)現(xiàn)負(fù)載均衡Pool的Persistence Type(進(jìn)程延續(xù))為None,也就是說(shuō)服務(wù)端不保持連接狀態(tài)。這樣,每次服務(wù)端事件被觸發(fā)時(shí),就會(huì)導(dǎo)致"ViewState值已被截?cái)?quot;。于是將Persistence Type(進(jìn)程延續(xù))的值改為Simple,Timeout設(shè)為600秒。
總結(jié):
程序員不單要寫好程序,也要適當(dāng)?shù)牧私庀到y(tǒng)。這個(gè)問(wèn)題,不一定會(huì)經(jīng)常遇到,作為一個(gè)解決問(wèn)題的思路,供大家分享。
附:負(fù)載均衡一般設(shè)三個(gè)地方來(lái)保證進(jìn)程延續(xù)。首先啟動(dòng)負(fù)載均衡,然后設(shè)置“Enable Connection Rebind”為true.最后Persistence Type一般設(shè)為Simple再加上超時(shí)時(shí)間。
企業(yè)網(wǎng)站建設(shè)解決方案 營(yíng)銷型網(wǎng)站建設(shè)解決方案 行業(yè)門戶網(wǎng)站建設(shè)解決方案 外貿(mào)網(wǎng)站解建設(shè)決方案 品牌形象網(wǎng)站建設(shè)解決方案 購(gòu)物商城網(wǎng)站建設(shè)解決方案 政府網(wǎng)站建設(shè)解決方案 手機(jī)網(wǎng)站建設(shè)解決方案 教育培訓(xùn)網(wǎng)站建設(shè)解決方案 珠寶高端奢飾品網(wǎng)站建設(shè)解決方案 房地產(chǎn)、地產(chǎn)項(xiàng)目網(wǎng)站建設(shè)解決方案 集團(tuán)、上市企業(yè)網(wǎng)站建設(shè)解決方案 數(shù)碼、電子產(chǎn)品網(wǎng)站建設(shè)解決方案 美容、化妝品行業(yè)網(wǎng)站建設(shè)解決方案
10年專業(yè)互聯(lián)網(wǎng)服務(wù)經(jīng)驗(yàn) 重慶最專業(yè)網(wǎng)站團(tuán)隊(duì) 資深行業(yè)分析策劃 B2C營(yíng)銷型網(wǎng)站建設(shè)領(lǐng)先者 最前沿視覺(jué)設(shè)計(jì)、研發(fā)能力 時(shí)刻最新技術(shù)領(lǐng)先研發(fā)能力 具有完備的項(xiàng)目管理 完善的售后服務(wù)體系 深厚的網(wǎng)絡(luò)運(yùn)營(yíng)經(jīng)驗(yàn)
中技互聯(lián)一直秉承專業(yè)、誠(chéng)信、服務(wù)、進(jìn)取的價(jià)值觀,堅(jiān)持優(yōu)秀的商業(yè)道德,以用戶最終價(jià)值為導(dǎo)向,向用戶提供優(yōu)質(zhì)產(chǎn)品和優(yōu)質(zhì)服務(wù),從而贏得了用戶的信賴。始終以不懈的努力、更高的目標(biāo)來(lái)要求自己。
主營(yíng)業(yè)務(wù):網(wǎng)站建設(shè) | 重慶網(wǎng)站建設(shè) | 重慶網(wǎng)站設(shè)計(jì) | 重慶網(wǎng)站制作 | 重慶網(wǎng)頁(yè)設(shè)計(jì) | 重慶網(wǎng)站開發(fā)