为什么我不能在模块中的HttpContext中设置一个项目然后在我的处理程序中取回它?

时间:2009-04-14 21:37:55

标签: asp.net httphandler httpmodule

在HttpModule中,我在上下文中放置了一个Item,如下所示:

HttpContext.Current.Items.Add("MyKey", "Hello world!");

直接在此代码下(仍在模块内),我可以从集合中检索此字符串,因此我知道它已添加。

快进到我的实际处理程序(Web表单 - .aspx)。我试着把这个项目拿回来:

string myString = HttpContext.Current.Items["MyKey"].ToString();

可悲的是,它是NULL - 项目不存在。

我旋转了集合,当它到达我的处理程序时,Items集合有两个键:

  • AspSession
  • AspSessionIDManagerInitializeRequestCalled

在模块中设置项目后,我调用RewritePath。不确定这与它有什么关系。

2 个答案:

答案 0 :(得分:0)

不太清楚代码的流程,但尝试使用HttpContext.Items而不是HttpContext.Current.Items集合。查看此链接 - http://odetocode.com/articles/111.aspx

答案 1 :(得分:0)

我的问题是那里有重定向的偷偷摸摸。因此,我设置值的请求和我读取值的请求实际上是两个单独的请求。它变得如此之快以至于我没有注意到,即使在调试时也是如此。