2011-01-05 10 views
1

ASP.NETアプリケーションは常に無効なビューステートエラーをスローしているようですが、実際には自分のサイトにあるものを再現する方法を見つけています。何が起こっているカスタム404ページと無効なビューステートエラー

は、ユーザーが存在しないページにアクセスしようとしていることであり、私は実行します。

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

これが私たちのカスタム404ページにユーザーをリダイレクトします。この404ページは、web.config経由でリダイレクトされるシステム内の単なる通常のページです。検索機能がこのページに表示されます。しかし、私はこのページからポストバックをするときにエラーが発生するようです。あなたが例えばに行くならば。あなたは自動提案を得れば、その後

http://alternativeto.net/software/doesntexist

そして、例えば、右上隅と型で検索フォームを使用しDropboxのは、(Enterキーを押し、それだけでそのアプリにあなたをリンクする原因となるクリックしないでください)とbaamを実行すると、 "無効なビューステート"というエラーが表示されます。

誰でもこの問題を解決する方法を知っていますか?それは私がどのように404エラーをスローするbeacuseですか?私はそれがカスタム404ページへのリダイレクトとviewstateとasp.netの魔法のいくつかの方法で何らかの無効な状態になりますtodoのことを想像することができますか?たぶん私はこれを修正するために私のweb.configの何かを変更することができますか?

私は得ることができるすべてのおかげで!もちろん、できるだけ多くのエラーを取り除きたい:)

UPDATE

は、私はそれを自分で解決するように思えます。 MSがそのセキュリティバグを持っていたときに、エラーをredirectMode = "ResponseRewrite"に変更することを推奨しました。に変更しました。redirectMode = "ResponseRedirect"うまくいくようです!

UPDATE 2

しかし、私はまた、私はむしろそれがエラーを持って、それははるかにきれいであるURLに滞在するので、ResponseRewriteソリューションを持つようにしたいことを実現します。だから私はまだResponseRewriteで動作するソリューションを見つけることができて幸せです。

答えて

0

検索ボックスは常にGET、決してPOST(!!)を使用する必要があります。したがって、検索にポストバックを使わないで、フォームメソッド= "get" action = "searchpage"であなたのテキストボックスを飾って、あなたは家にいなくて、すべての訪問者はもっと幸せになれます

+0

ああ、おそらく良い提案です。私はとにかくクエリーストリングでリダイレクトを行っていますので、もちろんどんな場合でも効率的なソリューションです。しかし、ASP.NETは、ページ全体が大きなフォームなので、これらのようなものになると少し奇妙です。だから、Javascriptや何かをしなければならない。 – Olaj

関連する問題