Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在当前会话中存储动态css文件名_C#_Asp.net Mvc_Cookies_Razor - Fatal编程技术网

C# 如何在当前会话中存储动态css文件名

C# 如何在当前会话中存储动态css文件名,c#,asp.net-mvc,cookies,razor,C#,Asp.net Mvc,Cookies,Razor,我不知道如何直接问这个问题,所以我会解释我的情况 我们为我们的客户提供了一个门户网站,他们可以这样访问该网站: {他们的guid}/ guid确定为站点加载的css文件: <link href="@Url.Content(string.Format("~/Content/{0}.css", GetCookieInfo.CssFile))" rel="stylesheet" type="text/css" /> 以及被调用以写入它的方法: var httpCookie4 =

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

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

{他们的guid}/

guid确定为站点加载的css文件:

<link href="@Url.Content(string.Format("~/Content/{0}.css", GetCookieInfo.CssFile))" rel="stylesheet" type="text/css" />
以及被调用以写入它的方法:

    var httpCookie4 = HttpContext.Current.Request.Cookies.Get(CookieEnums.CssFile.ToString());
    return httpCookie4 != null ? httpCookie4.Value : "Site";
在他们使用不同的guid访问之前,这一切正常。“重新读取”cookie的唯一方法是按CTRL-F5键以强制刷新页面。

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

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

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


我最初尝试了会话,但在超时时遇到了问题。还有人建议我在这篇文章中使用cookie:

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


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

ErocM您也可以尝试以下内容


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

要更改会话超时,请在web.config文件中写入此代码
或者您也可以在global.asax文件中将其设置为Session.Timeout=60

//在Session.Start()事件中
它将
增加会话过期时间

为什么不将css文件存储在会话变量中?如果他们第一次访问,您是否没有创建/存储
Cookie
?如果没有区别,您可以将其存储在ViewState对象中,或者将其添加到当前的
会话中
会话也有一个
Add
方法。如果我没有正确理解您的问题,请纠正我。@SystemDown我在这里问了这个问题,他们建议使用cookie:只要没有会话超时,会话变量就存在。您知道如何设置/调整会话超时吗?如果没有,请执行以下
o更改会话超时在web.config文件中写入此代码,或者也可以在global.asax文件中将其设置为session.timeout=60;//在Session.Start()事件中,它将增加您的会话过期时间。
这是一个想法,但我们的客户已经在其网站上硬编码了url,可以直接进入登录页面。此时更改它将导致问题。您不必更改登录页的URL,只需使用URL中的GUID即可确定响应中呈现的
链接
标记中的URL。也许我误解了这个问题?我在他们将首先访问的登录url内。从那里,我将填充网页加载到内存中的cookie。对,这样您就有了类似于
的东西。GetCSS操作将调用确定要使用哪个CSS文件的代码。您可以使用
@Request.Url
从Url获取GUID,可能是。ErocM没问题,很高兴我们都能给您一些启发和有用的建议:)
    var httpCookie4 = HttpContext.Current.Request.Cookies.Get(CookieEnums.CssFile.ToString());
    return httpCookie4 != null ? httpCookie4.Value : "Site";