使用XElement.Load时维护会话状态

时间:2011-05-31 11:01:41

标签: c# asp.net session

我的ASP.NET Web应用程序使用内部RSS提要,该提要使用当前登录用户的标识来自定义其内容。 RSS提要由我的应用程序中的标准.ashx处理程序生成。

当我使用XElement.Load(rssFeedUri)调用RSS源时,会话状态不会被维护(可能是因为会话ID cookie未随请求一起发送)。

直接从浏览器地址栏为登录用户调用RSS源正常工作。我已经确保我的处理程序实现了IRequiresSessionState,这样如果会话ID被传递给服务,我就可以访问会话数据。

使用Visual Studio调试器,我确定在通过XElement.Load访问我的订阅源时正在创建一个新会话。

如何加载RSS源并确保会话状态可用?

1 个答案:

答案 0 :(得分:2)

您可以执行以下步骤:

  1. 使用WebClient类将RSS URL内容加载到字符串中。使用此WebClient类时,将Cookie请求标头值设置为与具有会话ID等的当前Web请求Cookie标头相同。
  2. 从上面的字符串中创建String Reader
  3. 使用XElement.Load(str_reader)
  4. 我希望这能解决你的问题