2009-03-06 29 views
1

私たちのサイトでは、大量のデータベース生成ページを生成するためにURLを書き換えます。すべてのページに、ユーザー用のログインコントロールがあります。URL書き換え+ Asp.Netログインフォーム=死

内部aspxページ:/DB.aspx?id=123 ユーザー見えるURL:/ABC/123.aspx、/ABC/456.aspx ...(URL書き換え)残念ながら

、このような各ページのタグには、「DB.aspx?id = 123」というアクション属性があります。ユーザーがボタンをクリックすると、ブラウザは/ABC/DB.aspx?id=123に投稿されていますが、もちろん存在しません。

私が試したソリューション: 1. HtmlFormをサブクラス化してアクション属性を変更します。これは、サイト上の他のすべてのフォームを破棄します。 2.ブラウザが常に同じURLに投稿するように、アクション属性を削除します。これは書き直されたページでは動作しますが、 "/"(ルートディレクトリのdefault.aspx)に動詞の投稿が "/"に許可されないというメッセージが表示されます(iis 6とiはマッピングを制御できません)

誰ですか?

答えて

1

scott gu、http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspxからこのすてきなブログ記事を確認してください。

"具体的には、新しいASP.NET 2.0コントロールアダプタの拡張アーキテクチャを利用して、コントロールのレンダリングをカスタマイズし、" action "属性値を指定した値で上書きすることができます。 .aspxページ内のコードを変更する "

" URL書き換えを使用したASP.NETポストバックの処理 "のセクションをチェックして、彼が正常にポストしたアダプタを使用しました。

ps。 cookielessセッションを使用しているときにurl rewriteを使用するとasp.netにいくつかの問題があることに注意してください。書き換えられたURLは元のページよりも深いです。 (/ abc/apage対/ db?)。この問題はフレームワークのソースコードに当てはまりますが、回避策がありますが、それは全体的な主題です(同じレベルでそれらを持ちたいかもしれません)。

0

セマンティクスは多分ですが、action属性= "DB.aspx?id = 123"または "/DB.aspx?id=123"ですか? URLの書き換えが物理ページへのパススルーを許可すると仮定すると、これが問題になる可能性があります。

+0

はい、action属性はrealtiveです。とにかく、ユーザーにはDB.aspxを見せたくありません。すべてのアクセスは、SEOの最適化のために書き換えエンジンを経由する必要があります。 –

0

私は決してしませんでしたが、私は反射板を使用してコードを見て、私はあなたがこの方法でそれを修正することができますね。

this.Form.Action = null; 

か::ページで

問題が解決しない場合は

this.Form.SetAttribute("action", null); 

、ちょうど設定しますパスy必要なもの:

this.Form.SetAttribute( "action"、 "ABC/123.aspx");