2011-01-05 82 views
1

大家都知道,似乎ASP.NET應用程序總是拋出一些無效的ViewState錯誤,但現在我實際上找到了在我的網站上重現一個錯誤的方法。自定義404頁面和無效Viewstate錯誤

正在發生的事情是,一個用戶試圖訪問一個不存在的頁面,我做了:

if (CurrentItem == null) { 
     throw new HttpException(404, "Page not found"); 
    } 

這將用戶重定向到我們自定義的404頁。這個404頁面只是我們系統中的常規頁面,我們通過web.config重定向到該頁面。搜索功能在此頁面上可見。但是當我從這個頁面做回發時,錯誤似乎發生了。所以,如果你去例如。

http://alternativeto.net/software/doesntexist

然後使用搜索形式在右上角和類型,例如Dropbox的,按下回車鍵(如果你得到一個自動建議不要點擊導致它只會您鏈接到該應用程序)和巴姆,你會得到一個錯誤,即「無效的Viewstate」bla bla。

任何人都知道我該如何解決這個問題?這是否是我如何拋出404錯誤?我可以想象它有什麼與重定向到自定義404頁面和待辦事項和asp.net魔術處於某種無效狀態?也許我可以改變我的web.config中的東西來糾正這個問題?

感謝您的幫助!要擺脫儘可能多的錯誤,儘可能當然:)

UPDATE

好像我解決了它自己的。當MS有安全問題時,他們建議將錯誤重定向更改爲redirectMode =「ResponseRewrite」當我將其更改爲redirectMode =「ResponseRedirect」它似乎工作正常!

更新2

但我也意識到,我寧願希望有ResponseRewrite解決方案,因爲它會留在該網址是得到了錯誤,這是更清潔。所以我仍然很樂意找到一個適用於ResponseRewrite的解決方案。

回答

0

搜索框應始終使用GET,絕不會POST(!!)。所以不要使用回傳進行搜索,用表格方法裝飾你的文本框=「get」action =「searchpage」,你是免費的,所有的訪問者會更開心

+0

啊,這可能是一個很好的建議。無論如何,我正在使用查詢字符串進行重定向,所以無論如何這當然是一個更有效的解決方案。但是,當涉及到這樣的東西時,ASP.NET有點奇怪,因爲整個頁面是一個很大的形式。所以必須用Javascript或我想要的東西來做些事情。 – Olaj 2011-01-05 15:10:20