HTTPContext.当前问题 - 我是否正确使用它

本文关键字:是否 问题 HTTPContext | 更新日期: 2023-09-27 18:35:18

我有一种感觉,我错误地使用了HttpContext.Current,基于一些奇怪的代码输出。

我有两页,http://example.com/Foo.aspx 和 http://example.com/Bar.aspx。两者都有一个按钮,当单击该按钮时,它会调用页面上下文之外的类中的静态函数,该函数通过电子邮件发送给我System.Web.HttpContext.Current.Request.Url.AbsolutePath,因为该静态函数可以看到它。

我希望当发送 Foo.aspx 上的按钮时,它会给我发电子邮件"/Foo.aspx"......通常确实如此。我们注意到有一次Foo的电话.aspx出乎意料地向我们发送了"/Bar.aspx"。

可以想象,这两个页面都可以由同一个客户端加载。

  • 这是怎么回事?HttpContext.Current.Request 如何返回与调用引用它的静态函数的页面不同的路径?
  • 怎样才能得到我想要的东西 - 即,始终如一地获得调用关心它的静态函数的页面的绝对路径?

HTTPContext.当前问题 - 我是否正确使用它

  • 根据我的理解,您正确地使用了当前上下文。 它应始终是请求的 URL。 如果您执行了类似Server.Transfer的操作,则最终可能会遇到url与当前正在执行的页面的URL不匹配的情况(但我认为我没有尝试过)。
  • 您可以让页面以自己的名称传递。

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