使用: ASP.net 4.0 を使用した Visual Studio 2010
URL 書き換えを使用する Web サイトがあり、書き換えられた URL をポストバックに保持したいと考えています。この件に関する多くのトピックを読みましたが、これが可能かどうかはまだわかりません。
例えば:
http://localhost/ActualPage.aspx?PageID=4
次のように書き換えられます。
http://localhost/member/forum.aspx
このページには、Postback を使用する多数のコントロールが含まれています (たとえば、並べ替えとページングを備えた Telerik RadGrid)。通常、ポストバックが発生すると、ブラウザは書き換えられていない URL にリダイレクトされます。アドレス バー/ActualPage.aspx?PageID=4
なども表示されます。このシナリオでは、すべてが正しく機能します。
ただし、ポストバック後に書き換えられた URL を保持したいので、次のようにForm.Action
プロパティを書き換えられた URL に変更するようにコーディングしました。
Page.Form.Action = "/member/forum.aspx"
これで、ページはアドレス バーに URL を正しく保持しますが"Validation of viewstate MAC failed" error
、ポストバックが発生するとスローされます。これは、viewstate が別の URL から発信されているため、これも期待できます。
不思議なことに、この問題は がenableViewStateMac
false に設定されている場合でも発生します (ページまたは でweb.config
) - とにかくこれを無効にしたくありません。
事実上、私がしなければならないことは、この代替 URL からの入力を受け入れてもよいことをページ / ビューステートの mac 認証に伝えることだと思いますが、とにかくこれを行う方法を見つけることができません。それが違いを生むかどうかを確認するために別の URL 書き換えシステムを試しました。また、生成された machineKey を追加しようとしましたが、どちらも違いはありませんでした。これを行う方法はありますか?
要するに、私は欲しい:
- 書き換えられた URL へのポストバックがある書き換えられたページ
- ViewStateMac が有効
- ビューステート検証エラーなし
以前のバージョンの .NET で.browser
ファイルを使用していたことを覚えていますFormRewriterControlAdapter
が、これは .NET 4 では何の違いもないようです (とにかく URL が正常に保持されたかどうかは覚えていません)。