5

我正在 DotVVM 中构建一个站点,当我尝试以下代码行但出现错误时:NullReferenceException

HttpContext.Current.Session.Add ("Value", Item3);
4

2 回答 2

8

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"]来访问您的会话状态。

于 2016-04-20T09:01:35.227 回答
0

您可以通过执行以下操作将对象保存在 Session 中:

Session["Value"] = Item3;

您可以通过执行以下操作从 Session 检索对象:

object value = Session["Value"];

通常,您需要将值转换为您使用的类型,所以如果Item3是字符串,那么您会这样做:

string value = (string)Session["Value"];

您也可以从视图中访问会话变量,因此您不需要将其存储在视图模型中。

于 2016-04-20T08:50:00.173 回答