2013-03-13 85 views
2

我們有在IIS 7.5上運行的asp.net(v3.5)網站,我們的應用程序池是2.0。該站點也位於具有粘性會話的負載平衡服務器場中。 平均而言,我們每天大約會獲得200至300個視圖狀態錯誤,並且回發錯誤每天爲1,000至2,000個。回發或回調參數無效/視圖狀態無效

具有最多回發錯誤的頁面包含一個綁定了許多項的asp datalist。除了過濾和分頁的下拉菜單以及一些回發的asp超鏈接。

對於viewstate,這些頁面使用ajax選項卡,asp超鏈接,模式彈出式擴展器和asp下拉菜單。

該網站確實獲得了大量的流量,並且有很多機器人,例如Google和MSN。

我們已經嘗試了以下內容:對某些控件

  • 禁用ViewState中,以儘量減少ViewState的大小
  • 移動視圖狀態到數據庫
  • 壓縮的視圖狀態
  • 移動視圖狀態的底部

以上都不幫助我們解決我們的問題。

任何幫助解決這個問題將非常感謝你。

與錯誤信息更新:

  • 視圖狀態

錯誤來源:System.Web程序

錯誤的try/catch:System.Web.UI.ViewStateException:無效的視圖狀態。客戶端IP:端口:* **的User-Agent:Mozilla的/ 4.0(兼容;突觸)的ViewState:00ytitesern5vnudvqgz rneo/nncjwe2gqvm9hwsejfneaemuijx m43rkjqdgmurhezuvzjtw FCU/cbzrx0xfscog4bv07c1fi7ali/883amvbby5owiliaihufk4fvbn1wgarkbwxmmionsf0jcgw6wlnppj3ww8nmd3 423pu91yexxuyuygxpnu9osgzvxre5wfjlhlhg4ngo1bxdgekgfilzqbxjq58w2aqc7gvdj1ytz4xshkzvjdldiecewgfokt/ot2cpecb bavgiy2f/lvfjg4h9kmuvumsgrbkc6enfnfa0eqce2fi2hj3jo1qqchwsvty8l9uaq6k8oq6ctsggrtyr3xnd 654w6nmldj W8ùvvbaez6hm5zofqxnfrzobik6qbqq5dd7qrozuiu abdvgg xaa5jjm9o5/rroxkrx2fzzhkzjij0xc9p6jenvht 0mplciq4xnewyotosx86axuioyb0yww2phkothy2zok7j2q/xz4j29zz2drnmqj1km 3J mofii0kk0qe0/s8mkotmhtk4k rfyfja/h7wtebpualg3hg9ydru3yn6pfimay2aasoloydvmj/xfffd tknfqeg7da7/n2flq6hczcolanyjsxf9ofstomby4flhcyuuq/hqg7pc8qvrqy0s/seqyqkr 1ne7bktrazjwlgygpprawneml8f1kbujtbjtz7feieyzu76j1mnt agwlrhgchwjmux58cjlu2bbh7ayitfevapzt21pn92du5zcnmiajfxfou1motqkl8hqmlbjj0hxhpi5j5gg5xdxpz5xkqfdflw2wgqv fjxilhqm6mwyjsmif6r8wtdjkrsxxmapyeq61lfa8 7zntc2v3v8rup1kgm0ssp7bb zgcfy ...

錯誤信息:驗證視圖狀態MAC失敗。如果此應用程序由Web場或羣集託管,請確保| machineKey |配置指定相同的validationKey和驗證算法。 AutoGenerate不能在羣集中使用。

HttpErrorCode:500

堆棧跟蹤:在System.Web.UI.ViewStateException.ThrowError(異常內,字符串persistedState,字符串errorPageMes​​sage,布爾macValidationError)在System.Web.UI.ObjectStateFormatter.Deserialize(字符串inputString )在System.Web.UI.Util.DeserializeWithAssert(IStateFormatter格式化器,字符串serializedState)在System.Web.UI.HiddenFieldPageStatePersister.Load()在System.Web.UI.Page.LoadPageStateFromPersistenceMedium()在System.Web.UI.Page .LoadAllState()在System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)在System.Web.UI.Page.ProcessRequest(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)在System.Web.UI.Page.Process申請()在System.Web.UI.Page.ProcessRequest(HttpContext的背景下)在ASP.content_aspx.ProcessRequest(HttpContext的背景下)在System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()的系統。 Web.HttpApplication.ExecuteStep(IExecutionStep步驟,布爾&同步完成)

瀏覽器:Mozilla/4.0(兼容;突觸)

  • 回傳 錯誤來源:System.Web程序

錯誤的try/catch信息:System.ArgumentException:無效的回發或回調參數。使用| pages enableEventValidation = | true |/|來啓用事件驗證在配置中或|%@ Page EnableEventValidation = | true | %|在一個頁面中。爲了安全起見,此功能驗證回發事件或回調事件的參數來自最初呈現它們的服務器控件** _ sQueEl_clean。如果數據有效且預期,請使用ClientScriptManager.RegisterForEventValidation方法爲註冊回發或回調數據進行驗證。在System.Web.UI.ClientScriptManager.ValidateEvent(字符串UNIQUEID,字符串參數)在System.Web.UI.WebControls.TextBox.LoadPostData(字符串postDataKey,NameValueCollection中postCollection)在System.Web.UI.Page.ProcessPostData(NameValueCollection中POSTDATA,布爾fBeforeLoad)在System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)

錯誤信息:異常類型| System.Web.HttpUnhandledException |被拋出。

HttpErrorCode:500

堆棧跟蹤:在System.Web.UI.Page.HandleError(例外五)在System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)在System.Web程序。 UI.Page.ProcessRequest(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)在System.Web.UI.Page.ProcessRequest()在System.Web.UI.Page.ProcessRequest(HttpContext的上下文)在ASP.category_aspx.ProcessRequest(HttpContext的上下文)中的系統.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,布爾&同步完成)

瀏覽器:Mozilla/5.0(iPhone; CPU的iPhone OS 6_0_1像Mac OS X)AppleWebKit/536.26(KHTML,像壁虎)版本/ 6.0移動/ 10A523 Safari/8536.25

+0

機會是您的datalist正在被數據綁定到與回發之前不同的東西的數據源。另一種解決方案是使用ajax而不是依靠回發。除此之外,我們需要更具體的信息。 – 2013-03-13 14:02:03

+0

@布拉德謝謝我可以提供哪些其他信息給您? – Kaos 2013-03-13 14:04:01

+0

你能發佈你收到的確切錯誤嗎?可以幫助我們診斷問題。 – 2013-03-13 14:04:02

回答

0

我見過類似的問題,經調查我們可以得出結論,這是由於通過spambots點擊我們的網站 - 即試圖提交價值觀而不是先獲得正確的視圖狀態,視圖狀態正在做它設計要做的事情(保護你的回發免受無效數據 - 惡意或其他)。

這可能是你所看到的也就是我的期望。如果你得到很多機器人,如谷歌和MSN擊中它,這幾乎可以肯定你也變壞機器人。

參考這些所謂的搜索結果:像this onehttps://stackoverflow.com/search?q=asp.net+spambot

和文章可能有助於減輕你對錯誤的擔憂。

它確實讓我感到奇怪,錯誤消息會讓我們在一場瘋狂的追逐中嘗試檢測複雜的內部問題,而不僅僅是明確地指出「在野外,最簡單的這種情況最可能的原因是,你被一個spambot擊中「有一些建議或文章可以參考如何確認這一點。

+0

我會看看謝謝。 – Kaos 2013-03-13 14:15:39

1

服務器場中所有服務器上的計算機密鑰(http://msdn.microsoft.com/en-us/library/w8h3skw9%28v=vs.71%29.aspx)值是否相同?

+0

我們尚未探索該選項,但會在幾天內查找。 – Kaos 2013-03-13 17:23:55

+0

+1 @Kaos這真是一個很好的觀點 - 我完全錯過了OP中的第一段,說明它在農場,每天有200-300個視圖狀態錯誤。如果這是垃圾郵件活動,我會感到震驚。我同意這個問題比我建議的更可能是問題。對不起,如果我送你一個不同的野鵝追逐。 – Sepster 2013-03-21 14:17:53

相關問題