【问题标题】:Custom Header Variables being cached on ASP.net Page缓存在 ASP.net 页面上的自定义标题变量
【发布时间】:2012-01-15 09:19:43
【问题描述】:

我有一个 ASCX 控件,它位于用 .net 编写的 CMS 中,我遇到的问题是我们在标题中传递了一个名为 fullname 的变量。我们有一个简单的脚本来读取这个变量,然后在页面中输出名称。但有时有些用户会得到完全随机的用户名(我已经验证他们没有登录到那台机器,这告诉我这一定是某种服务器端缓存正在进行)。我正在考虑使用 SetCacheability,但不确定这是否会导致整个页面不被缓存,或者只是加载在页​​面上的 ascx 控件。有什么想法吗?

        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        if (!String.IsNullOrEmpty(this.UserName))
        {
            lblUsername.Text = Request.ServerVariables["fullname"].ToString();
        }

【问题讨论】:

  • 特别建议不要将用户信息放在标题中,因为它很容易被伪造/伪造:msdn.microsoft.com/en-us/library/ms525396(v=vs.90).aspx。您如何验证用户身份?由于每个用户都应该拥有自己的会话,因此某些用户可以显示为其他用户的事实很奇怪。我想知道最初提取用户全名的过程是否弄错了。

标签: c# asp.net caching http-headers


【解决方案1】:

您可以在 ASCX 标记中声明 @OutputCache 属性并将其属性设置为 Duration="0" VarByParam="None" (documentation)。

您也可以查看“Caching portions of an ASP.NET Page”文章和“Dynamically Updating Portions of a cached page”。

【讨论】:

    猜你喜欢
    • 2013-01-14
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多