为什么即使我在其中设置了一个值,会话也返回 null?

Why is session returning null even if I set a value in it?

提问人:weboshi 提问时间:7/27/2023 最后编辑:weboshi 更新时间:7/27/2023 访问量:59

问:

我想将日期设置为会话,但它给了我一个空值。

这是我的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using PowerBICustomPage.Models;
using Microsoft.AspNet.Identity;
using Microsoft.Owin.Security;
using System.Security.Claims;
using System.Web;

namespace PowerBICustomPage.Controllers.Api
{
    [Authorize]
    public class AccountController : ApiController, IRequiresSessionState
    {
        DataClassesDataContext _context;
        public AccountController()
        {
            _context = new DataClassesDataContext();
            
        }
  [AllowAnonymous]
        [HttpPost]
        public IHttpActionResult Login(LoginViewModel model)
        {
                    var userinfo = _context.Users.SingleOrDefault(l => l.UserName == model.UserName);
                    DateTime DateExp = userinfo.DateExpiration.Value;
                
                    var date = DateExp.ToString("dd/MM/yyyy HH:mm:ss");
                    HttpContext.Current.Session["expired"] = date;// THIS LINE RETURNS NULL
        }
    }
}

我只是缩短了我的代码,这样它就不会看起来很乱。此外,Intellisense 没有拾取 ViewBag 或 Session[“”],我不知道为什么。

我试过这个

HttpContext context = HttpContext.Current;
context.Session["expired"] = DateExp.ToString("dd/MM/yyyy HH:mm:ss");

但它仍然返回一个 null 值

C# ASP.NET-MVC 会话 NullReferenceException

评论

0赞 Guilherme Rocha 7/27/2023
你试过这个吗?stackoverflow.com/questions/15117379/......

答:

0赞 YungDeiza 7/27/2023 #1

HttpContext.Current.Session[“expired”] = date;// 此行返回 零

该行不返回 null,它不返回任何内容。这是一项赋值,因此不会返回任何内容。您需要在操作结束时返回正确的视图。

也:

return View();

艺术

return View("NameOfViewToLoad");

应添加到方法的末尾。

注意:Login() 允许人们在未经身份验证的情况下调用它,但似乎没有执行任何身份验证。出于安全原因,建议更改方法 - 至少是简单的密码检查

评论

0赞 weboshi 7/28/2023
我有一个返回结果,导致一个ajax脚本。该脚本导致 Home 索引。
0赞 YungDeiza 7/28/2023
似乎您遗漏了一大堆关键代码