为什么我不能读或写会话?抛出NullObject引用
本文关键字:抛出 NullObject 引用 会话 不能读 为什么 | 更新日期: 2023-09-27 18:00:33
我正在制作一个WebAPI应用程序,发现我无法读取或写入会话。我通常会如何做它给出和NullObject引用错误,即:
Session["Test"] = "Testing"; var testing = Session["Test"].ToString();
有人会理解为什么这个例子会这样吗?
using System;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using System.Web.SessionState;
using System.Web.UI.WebControls;
using DotNetNuke.Entities.Modules;
using DotNetNuke.Entities.Portals;
using DotNetNuke.Services.Exceptions;
using DotNetNuke.Web.Api;
namespace DotNetNuke.Modules.ContactsManager
{
public partial class ServicesController : DnnApiController
{
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage createRequest(string amount)
{
//code omitted
HttpContext.Current.Session["Test"] = "Test";
//code omitted
return Request.CreateResponse(HttpStatusCode.OK, result);
}
}
}
可能是您没有正确添加到会话中。
试着做一些类似HttpContext.Current.Session.Add("Test", "Test");
的事情
然后,您的第二个语句var testing = Session["Test"].ToString();
将按照预期检索数据。
我找到了答案,这都是关于继承的。我的解释可能措辞不太好,因为我仍在学习,但它在这里。
我正在处理的类已经继承了一个ApiController类,在我的DotNetNuke项目中,Session之类的东西似乎包含在{NameSpace}ModuleBase"类。所以实现一个IDisposable
using(myPorjectModuleBase base = new myProjectModuleBase())
{
var testing = Session["Test"].ToString();
}
然后我可以访问会话。
这可能是专门针对DotnetNuke平台6.2及更高版本的模块开发的。
感谢大家的帮助。
您可以使用以下代码,这是C#中的示例
public static string UserId
{
get
{
if (HttpContext.Current.Session["UserId"] == null)
{
return "";
}
return HttpContext.Current.Session["UserId"].ToString();
}
set
{
HttpContext.Current.Session["UserId"] = value;
}
}