現在、Intelligencia の URL Rewriter .NET HTTPModule を使用して URL を書き換えています。カスタム変換機能を使用しています。これにより、実際の URL 変換を実行するメソッドを含むアセンブリを提供できます。
Cookie を使用しないセッションをオンにしていますが、これが URL リライターに何らかの干渉を引き起こしています。
だから、私のサーバー上のパスがこれだとしましょう:
http://www.foobar.com/actualPath/index.aspx
しかし、パスを次のようにするために URL 書き換えを使用したい:
http://www.foobar.com/rewrittenPath/index.aspx
次を出力するスクリプトを作成しました:
- Request.Url (分離コードから)
- Request.RawUrl (分離コードから)
- document.location (javascript から)
アドレスバーに次のように入力します:
http://www.foobar.com/rewrittenPath/index.aspx
cookieless セッションを無効にすると、すべてが正常に機能します。
私のスクリプト
は次の値を出力
します: ://www.foobar.com/rewrittenPath/index.aspx
- アドレス バーの URL は、最初に入力したものから変更されていません。
ただし、Cookie を使用しないセッションを有効にすると、うまくいきません。私のスクリプトは次の値を出力します:
- Request.Url はhttp://www.foobar.com/actualPath/index.aspx
として表示されます
- Request.RawUrl は /actualPath/index.aspx として
表示されます://www.foobar.com/actualPath/index.aspx
- アドレス バーの URL が何らかの形で変更され、次のように表示されます:
http://www.foobar.com/(S(SESSIONID))/actualPath/インデックス.aspx
しかし、これは奇妙なことです。ページの OnLoad イベントは 1 回しか発生しません。それで、ここで何が起こっているのですか?.NET はページ リダイレクトを実行していますが、OnLoad イベントが発生する前に実行していますか?
私がやりたいことは、rewrittenPath をアドレス バーに保持することです。document.location が rewrittenPath を返すようにしたいと思います。Request.RawUrl に rewrittenPath を返してもらいたいです。これは Cookie のないセッションで可能ですか? それとも、.NET の Cookie を使用しないセッション メカニズムにより、この動作が不可能になるのでしょうか?
お時間をいただき、ありがとうございました。