2009-07-23 8 views
4

現在、URLを書き換えるのにIntelligencia's URL Rewriter .NET HTTPModuleを使用しています。私は実際のURL変換を実行するメソッドを含むアセンブリを提供するためのカスタム変換機能を使用しています。URL .NETでの書き換えは、cookielessセッションではうまく動作しません。

cookielessセッションが有効になっています。これがURLリライタを妨害しています。

それでは、私のサーバー上のパスがこれですと言ってみましょう:私は、スクリプトを作っ
http://www.foobar.com/rewrittenPath/index.aspx


http://www.foobar.com/actualPath/index.aspx

しかし、私はパスを作るためにURL書き換えを使用したい、このように見えます次のように出力します:
- Request.Url(私のコードビハインドから)
- Request.RawUrl(私のコードビハインドから)
- document.location(javascriptから)

は、私は私のアドレスバーに次のように入力します。それが必要として
私はクッキーレスセッションが無効になっている http://www.foobar.com/rewrittenPath/index.aspx

、すべての作品。 Request.Url http://www.foobar.com/actualPath/index.aspx
として表示されます - - はdocument.location http://www.foobar.com/rewrittenPath/index.aspx
として表示されます - - /rewrittenPath/index.aspx
としてRequest.RawUrlが現れURLをアドレスに
は:私のスクリプトは、次の値を出力しますバーは私が最初に入力したものと変わりはありません。

しかし、cookielessセッションを有効にすると、何かがうまくいかなくなります。 Request.Url http://www.foobar.com/actualPath/index.aspx
として表示されます - - はdocument.location http://www.foobar.com/actualPath/index.aspx
として表示されます - - /actualPath/index.aspx
としてRequest.RawUrlが現れURLをアドレスに
は:私のスクリプトは、次の値を出力しますそれはとして表示されますので、バーは何とか、変更されてしまう:
http://www.foobar.com/(S(SESSIONID))/actualPath/index.aspx

しかし、これは奇妙なことである - のページのOnLoadイベントは今まで一度発射します。ではここで何が起こっているのですか? .NETはページリダイレクトを実行していますが、OnLoadイベントが発生する前に実行していますか?

私がしたいことは、アドレスバーにrewrittenPathを保持することです。 rewrittenPathを返すdocument.locationが欲しいです。 Request.RawUrlがrewrittenPathを返すようにしたいと思います。これはcookielessセッションで可能ですか?または、.NETのcookielessセッションメカニズムはこの動作を不可能にしますか?

ありがとうございました。

答えて

1

クッキーレスセッションはセッションクッキーではなく、URLにセッションIDを挿入します。したがって、URLRewriter.NETのURLマッピングでは、この動作を考慮する必要があります。あなたはこれをしていますか?クッキーの有無にかかわらず実行できるようにするには、クッキーとクッキーレスURLパターンの両方に一致するルールが必要です。

+1

まあ、私のURLマッピングは本当に受け入れているので、URLの書き換えには影響しません。何が起こっているように見えるのは、.NETがセッションIDをURLに張っているだけではないということです。また、「実際の」パス(リライトされていないパスや「生のパス」ではなく)へのページリダイレクトも行われます。これにより、アドレスバーに「実際の」パスが表示され、JavaScriptに「実際の」パス内部document.location。 .NETが 'raw'パスから 'actual'パスにリダイレクトせずに 'raw'パスにセッションIDを張ってしまった場合、私はそれを望みます。これが可能かどうか知っていますか? – user44701

+0

oops - 私は「まあ、私のURLマッピングは本当に受け入れているので、URLの書き換えに影響を与えてはいけない」と言いました。私の言うことは、「私のURLマッピングは本当に受け入れられており、Cookieのないセッションに影響を与えるはずです。 完全を期すために、ここで私のマッピングは次のとおりです。 私はまた、HeliconのISAPI_Rewrite(lite)を使用して拡張性のないURLを再ルーティングしています。 RewriteRule ^([^ \。] + [^ /])$ $ 1/index.aspx [NC、L] RewriteRule ^([^ \。] + /)$ $ 1/index.aspx [NC、L] – user44701

関連する問題