gpt4 book ai didi

c# - VaryByCustom 不适用于 session 变量

转载 作者:太空狗 更新时间:2023-10-29 20:42:18 26 4
gpt4 key购买 nike

我正在为一个带有登录系统的网站使用输出缓存。我有每个用户都可以访问的全局页面。这些页面被缓存并且还使用母版页。

<%@ OutputCache Duration="3600" VaryByParam="none" VaryByCustom="userid" %>

我在 session 中存储用户登录详细信息。我的 global.asax 文件在这里:

public override string GetVaryByCustomString(HttpContext context, string arg)
{
string result = String.Empty;
if (arg == "userid")
{
object o = Session["UserID"];
if (o != null) { result = o.ToString(); }
}
else { result = base.GetVaryByCustomString(context, arg); }
return result;
}

我在母版页中有一个面板,对经过身份验证的用户可见。当用户登录并查看公共(public)页面 A 时,另一个 guest 用户也会在页面 A 上看到经过身份验证的用户面板。如果 guest 首先查看页面 A,那么经过身份验证的用户不会在页面 A 上看到面板。

我的代码的哪一部分是错误的?我正在使用 VaryByCustom第一次。

编辑

我已经像这样修改了我的 global.asax,但文本文件中没有任何内容:

public override string GetVaryByCustomString(HttpContext context, string arg)
{
string result = String.Empty;

FileInfo t = new FileInfo(Server.MapPath("App_Data\\debug.txt"));
StreamWriter Tex = t.AppendText();
Tex.WriteLine("GetVaryByCustomString: " + arg);

if (arg == "userid")
{
object o = Session["UserID"];
if (o != null) { result = o.ToString(); }

Tex.WriteLine("Checked UserID: " + o + Tex.NewLine);
}
else { result = base.GetVaryByCustomString(context, arg); }

Tex.Close();

return result;
}

最佳答案

我认为 Session["UserID"] 可能出于某种原因总是返回 null/或有时返回 null,即使用户已通过身份验证也是如此。

在此函数请求之前,请仔细检查您是否已设置它。

关于c# - VaryByCustom 不适用于 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4189209/

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