我应该如何在当前会话中存储我的动态css文件名

本文关键字:我的 存储 动态 css 文件名 会话 我应该 | 更新日期: 2023-09-27 18:03:38

我不知道如何直接询问,所以我将解释我的情况。

我们为客户提供了一个门户网站,他们可以访问该网站:

http://url.com/webporta/{他们的guid}/

guid决定为站点加载什么css文件:

<link href="@Url.Content(string.Format("~/Content/{0}.css", GetCookieInfo.CssFile))" rel="stylesheet" type="text/css" />

每次他们访问网站时,我都会读取css文件名并重新填充cookie,以确保我具有当前值。

这就是我从服务调用中读取数据库并写出cookie的地方:

    var css = client.GetCssFile(id);
    if (string.IsNullOrEmpty(css))
    {
      sb.AppendLine("Setting css to 'Site' default since GetCssFile returned null or empty.");
      css = "Site";
    }

以及被调用来写入它的方法:

    var httpCookie4 = HttpContext.Current.Request.Cookies.Get(CookieEnums.CssFile.ToString());
    return httpCookie4 != null ? httpCookie4.Value : "Site";

在他们使用不同的guid访问之前,此操作正常。他们"重读"cookie的唯一方法是通过CTRL-F5强制刷新页面

必须有一个比这更好的方法,因为我似乎无法让网站在加载时重读cookie,或者至少我不知道如何。

有什么更好的处理方法的建议吗?

======编辑#1======

我最初尝试了会话,但时间安排有问题。我还被建议在这篇文章中使用cookie:我应该如何依赖会话

我应该如何在当前会话中存储我的动态css文件名

ErocM这里有一些东西你也可以尝试

你知道如何设置/调整会话超时吗?如果没有,请执行以下

to change session timeout write this code in your web.config fileor you can also set this in global.asax file as Session.Timeout = 60;CCD_ 3它将是CCD_。

不要将CSS文件名存储在cookie中,而是让控制器或http处理程序根据GUID来决定要提供哪个CSS文件。

所以URL应该类似于http://url.com/whatever/GetCSS/{GUID}。当他们访问具有不同GUID的网站时,响应将更改为该GUID的相应CSS文件。