我正在DotVVM中构建一个站点,当我尝试以下代码行时,我收到错误:NullReferenceException
HttpContext.Current.Session.Add ("Value", Item3);
答案 0 :(得分:7)
DotVVM 是 OWIN中间件,因此您必须先配置OWIN才能启用会话。首先,您需要声明此方法,该方法将打开ASP.NET会话:
public static void RequireAspNetSession(IAppBuilder app) {
app.Use((context, next) =>
{
var httpContext = context.Get<HttpContextBase>(typeof(HttpContextBase).FullName);
httpContext.SetSessionStateBehavior(SessionStateBehavior.Required);
return next();
});
// To make sure the above `Use` is in the correct position:
app.UseStageMarker(PipelineStage.MapHandler);
}
然后在Startup.cs
文件中,将其命名为:
app.RequireAspNetSession();
然后,您可以使用HttpContext.Current.Session["key"]
来访问会话状态。
答案 1 :(得分:0)
您可以通过执行以下操作在会话中保存对象:
Session["Value"] = Item3;
您可以通过执行以下操作从Session中检索对象:
object value = Session["Value"];
通常,您需要将值强制转换为您使用的类型,因此如果Item3
是一个字符串,那么您可以这样做:
string value = (string)Session["Value"];
您也可以从视图中访问会话变量,因此您无需将其存储在viewmodel中。