0
すべての検索条件は、検索、ページング、並べ替えを行う際に維持する必要があります。私のlocalhostでうまく動作します。しかし、ページがステージングサーバーに公開されると、ChangeSort
が呼び出されるたびに、セッション変数SearchOptions
がnull
にリセットされます。なぜセッション変数はステージングサーバーで失われますが、localhostでは正常に動作しますか?
セッション変数を混乱させるIISに特別なものはありますか?以下の貼り付け
コードです:
public SearchInputModel SearchOptions
{
get { return SessionValues.Search; }
set { SessionValues.Search = value; }
}
public RedirectToRouteResult ChangeSort(string sortCase)
{
if (SearchOptions == null) return RedirectToAction("Index");
switch (sortCase)
{
case "ConfirmationNumber":
{
SearchOptions.Sort = (SearchOptions.Sort == SortEnum.ConfirmationNumberAscending)
? SortEnum.ConfirmationNumberDescending
: SortEnum.ConfirmationNumberAscending;
break;
}
case "LicenseNumber":
{
SearchOptions.Sort = (SearchOptions.Sort == SortEnum.LicenseNumberAscending)
? SortEnum.LicenseNumberDescending
: SortEnum.LicenseNumberAscending;
break;
}
case "Date":
{
SearchOptions.Sort = (SearchOptions.Sort == SortEnum.DateAscending)
? SortEnum.DateDescending
: SortEnum.DateAscending;
break;
}
default:
{
SearchOptions.Sort = SortEnum.NoSorting;
break;
}
}
return RedirectToAction("Index");
}
SessionValues
クラスは、I /書き込みセッション変数を読み取るために使用することです。 Global.asax.csで
public class SessionValues
{
public static string Search
{
get
{
if (HttpContext.Current.Session["Search"] == null)
return null;
return (string)HttpContext.Current.Session["Search"];
}
set
{
HttpContext.Current.Session["Search"] = value;
}
}
}
}
、私はSession_Start()
イベントがあるかどうかを確認するためにいくつかのコードを持っています。
protected void Session_Start()
{
//some code to write to log file.
}
セッションリセットがないことを確認してから、何も記録されません。 IISで
セッション状態:
変更セッション状態モード IISのプロセスでにSQL Serverのからは、それを修正します。しかし、これはロードバランスサーバーにとって望ましい解決策ではありません。
?あなたはクラス全体を投稿できますか? –
私の 'SessionValues'クラスを含むように投稿を更新しました。通知をありがとう。 – Blaise
セッション設定はlocalhostとステージング設定で同じですか?私はセッション状態モード – tomassino