2

直接聞いてもわからないので、事情を説明します。

クライアント用のポータルがあり、クライアントは次のようにサイトにアクセスします。

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 を使用するよう提案されました: How reliant I be on Session

4

2 に答える 2

1

CSS ファイル名を Cookie に保存する代わりに、GUID に基づいて提供する CSS ファイルをコントローラーまたは http ハンドラーに決定させます。

したがって、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 に答える