セッション変数として保存する必要がある Serializable としてマークされたユーティリティ クラスがあります。そのクラスは次のとおりです。
[Serializable]
public class NameValuePair<TName, TValue>
{
public TName Name { get; set; }
public TValue Value { get; set; }
public NameValuePair(TName name, TValue value)
{
Name = name;
Value = value;
}
public NameValuePair() { }
}
私の NancyModule クラスは Cookie を適切に逆シリアル化できず、null の Request.Session オブジェクトを取得します。
セッションがどのように設定されるかの進行は次のとおりです。
LoginModule はユーザーを検証してから、セッションに入力します。
Request.Session["UserId"] = user.Id;
Request.Session["TimeZoneId"] = user.TimeZoneId;
Request.Session["StandardStartTime"] = user.StandardStartTime;
Request.Session["StandardEndTime"] = user.StandardEndTime;
var nvp = new NameValuePair<string, int>() { Name = "Davie", Value = 777};
Request.Session["NVP"] = nvp;
後続のモジュールでは、Session オブジェクトは null です。セッションから nvp オブジェクトを削除すると、逆シリアル化が適切に行われ、値が返されます。どんな洞察も役に立ちます。