gpt4 book ai didi

asp.net - 使用 SimpleWorkerRequest 加载页面时如何访问 session 变量?

转载 作者:行者123 更新时间:2023-12-02 18:32:19 25 4
gpt4 key购买 nike

我正在将 ASPX 文件作为字符串读取,并使用返回的 HTML 作为电子邮件消息的源。这是代码:

public string GetEmailHTML(int itemId)
{
string pageUrl = "HTMLEmail.aspx";

StringWriter stringWriter = new StringWriter();
HttpRuntime.ProcessRequest(new SimpleWorkerRequest(pageUrl, "ItemId=" + itemId.ToString(), stringWriter));
stringWriter.Flush();
stringWriter.Close();

return stringWriter.ToString();
}

HTMLEmail.aspx 使用 ItemId 查询字符串变量从数据库加载数据并使用结果填充页面。我需要保护 HTMLEmail.aspx 页面,以便受操纵的查询字符串不会让任何人看到结果。

我像这样存储当前用户:

public User AuthenticatedUser
{
get { return Session["User"] as User; }
set { Session["User"] = value; }
}

由于页面请求不是由浏览器直接发出,而是由 SimpleWorkerRequest 发出,因此没有发布 SessionId,因此 HTMLEmail.aspx 无法访问任何 session 变量。至少,我认为这就是问题所在。

我在这里阅读了有关 session 变量的概述:http://msdn.microsoft.com/en-us/library/ms178581.aspx

我想知道是否需要实现自定义 session 标识符。我可以在 GetEmailHTML 方法中获取当前的 SessionId,并将其作为查询字符串参数传递到 HTMLEmail.aspx 中。如果我在 HTMLEmail.aspx 中有 SessionId,我也许可以使用自定义 session 标识符来访问 session 变量。

这个修复听起来很困惑。它还删除了 ASP 自动应用于 SessionId 的加密层。

谁有更好的主意?

最佳答案

据我所知,最好的选择是通过查询参数将 HTMLEmail.aspx 中所需的所有值传递给它,就像使用 ItemId< 一样.

除此之外,您可能只需将用户的 UserId 发送到该页面,然后将其发送到数据库(或存储用户的任何位置)到 User 对象,而不是尝试从 session 变量中读取它。

编辑:

你为什么不使用:

public string GetEmailHTML(int itemId)
{
string pageUrl = "HTMLEmail.aspx";

StringWriter stringWriter = new StringWriter();
Server.Execute(pageUrl, stringWriter);
stringWriter.Flush();
stringWriter.Close();

return stringWriter.ToString();
}

相反?至I can see Server.Execute继承相同的http请求。

关于asp.net - 使用 SimpleWorkerRequest 加载页面时如何访问 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5506758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com