我正在 DotVVM 中构建一个站点,当我尝试以下代码行但出现错误时:NullReferenceException
HttpContext.Current.Session.Add ("Value", Item3);
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"]
来访问您的会话状态。
您可以通过执行以下操作将对象保存在 Session 中:
Session["Value"] = Item3;
您可以通过执行以下操作从 Session 检索对象:
object value = Session["Value"];
通常,您需要将值转换为您使用的类型,所以如果Item3
是字符串,那么您会这样做:
string value = (string)Session["Value"];
您也可以从视图中访问会话变量,因此您不需要将其存储在视图模型中。