0

奇妙なコード出力に基づいて、HttpContext.Current を誤って使用していると感じています。

http://example.com/Foo.aspxhttp://example.com/Bar.aspxの2 つのページがあります。どちらにもボタンがあり、クリックするとページのコンテキスト外のクラスで静的関数が呼び出され、System.Web.HttpContext.Current.Request.Url.AbsolutePath がその静的関数に表示されたときにメールが送信されます。

Foo.aspxのボタンが送信されると、「/ Foo.aspx」というメールが届くと思いますが、通常はそうです。Foo.aspx からの呼び出しで、"/Bar.aspx" が予期せず送信されることに気付きました。

両方のページが同じクライアントによってロードされた可能性があります。

  • 何が起きてる?HttpContext.Current.Request は、それを参照する静的関数を呼び出したページとは異なるパスをどのように返しますか?
  • どうすれば欲しいものを手に入れることができますか?つまり、それを気にする静的関数を呼び出したページの絶対パスを確実に手に入れることができますか?
4

2 に答える 2

2
  • 私の理解では、あなたは現在のコンテキストを正しく使用しています。常に要求されたURLである必要があります。Server.Transferのようなことをした場合、URLが現在実行中のページのURLと一致しない状況になる可能性があります(ただし、これを試したことはないと思います)。
  • ページを独自の名前で渡すことができます。
于 2012-05-24T15:06:11.857 に答える
0

HttpContext.Current.Request は、要求を処理しているスレッドの正しいパスを返します (ASP.NET が要求処理を別のスレッドに切り替えた場合でも)。同じスレッドで呼び出していますか? また、何らかの形で Foo.aspx に対する別の要求が同時または類似の時間に受信されていないことを 100% 確信していますか?

于 2012-05-24T15:07:16.277 に答える