2

我不知道如何直接问这个,所以我会解释我的情况。

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

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

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";

在他们使用不同的向导访问之前,这工作正常。他们“重读”cookie的唯一方法是按CTRL-F5强制刷新页面。

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

关于更好的处理方式有什么建议吗?

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

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

4

2 回答 2

1

不是将 CSS 文件名存储在 cookie 中,而是让控制器或 http 处理程序根据 GUID 决定要服务的 CSS 文件。

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

于 2013-03-12T18:24:44.967 回答
1

ErocM 这里是你也可以尝试的东西

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

to change session timeout write this code in your web.config file or you can also set this in global.asax file as Session.Timeout = 60; // in Session.Start() event它会increase your session expire time的。

于 2013-03-12T19:02:33.767 回答