0

基于一些奇怪的代码输出,我感觉我使用 HttpContext.Current 不正确。

我有两个页面,http://example.com/Foo.aspxhttp://example.com/Bar.aspx。两者都有一个按钮,当单击该按钮时,该按钮会调用页面上下文之外的类中的静态函数,该函数会在该静态函数看到它时向我发送电子邮件 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 与当前正在执行的页面不匹配的情况(但我认为我没有尝试过)。
  • 您可以让页面以自己的名称传递。
于 2012-05-24T15:06:11.857 回答
0

HttpContext.Current.Request 将为正在处理您的请求的线程返回正确的路径(即使 ASP.NET 将请求处理切换到另一个线程)。你确定你在同一个线程中调用它吗?您是否 100% 确定您没有在同一时间或类似时间收到另一个对 Foo.aspx 的请求?

于 2012-05-24T15:07:16.277 回答