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

本文关键字:维护 会话状态 Load XElement 使用 | 更新日期: 2023-09-27 17:58:15

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

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

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

使用Visual Studio调试器,我已经确定当通过XElement.Load.访问我的提要时,正在创建一个新会话

如何加载RSS提要并确保会话状态对其可用?

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

您可以执行以下步骤:

  1. 使用WebClient类以字符串形式加载RSS URL内容。使用此WebClient类时,将Cookie请求标头值设置为与具有会话ID等的当前web请求Cookie标头相同
  2. 从上面得到的字符串创建字符串读取器
  3. 使用XElement.Load(str_reader)

我希望这将解决您的问题