asp. net базовый API с POSTMAN работает нормально, но с jquery ajax не работает? - PullRequest
0 голосов
/ 26 марта 2020

я хочу использовать HttpContext.Session в API

в том же контроллере WebApi, но с другими действиями.

$.ajax({
url:baseAppUrl+"api/login",
type:"post",
data:{
action:"sms",
username:"",///mobile phone
},
success:function(ret,err){

}

он даст мне код и затем использовать код для входа в систему.

, но после ajax отправьте запрос снова, я не могу получить HttpContext.Session.

Я использую. net core 3.1

if (action.Equals("sms"))
        {
            if (string.IsNullOrEmpty(username))
            {
                return Json(new { Ok = false, Message = "parameter is null" });
            }
            Random rnd = new Random();
            var verifyCode = rnd.Next(111111, 999999).ToString();
            HttpContext.Session.SetString("code", verifyCode);
            return Json(new { Ok = true, Message = verifyCode });
        }

и в действии входа в систему:

if (action.Equals("mobileLogin"))
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(code))
            {
                return Json(new { Ok = false, Message = "paremeter is null" });
            }
            var userCode = HttpContext.Session.GetString("code"); //the userCode will be null.
            if (!string.IsNullOrEmpty(userCode))
            {
                ////.....
            }
}

но с почтальоном все работает.

почему?

1 Ответ

0 голосов
/ 26 марта 2020

В Startup.cs, убедитесь, что к ConfigureServices и Configure методам добавлено следующее

public void ConfigureServices(IServiceCollection services)  
{
    ...  
    services.AddSession(options => {  
        options.IdleTimeout = TimeSpan.FromMinutes(20);//You can set Time   
    });
    ...  
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    app.UseSession();
    ...
}

Пожалуйста, также проверьте, что браузер получает сессионный повар ie. В Chrome:

  1. щелкните значок блокировки в строке URL
  2. щелкните Cookies
  3. посмотрите, есть ли повар ie .AspNetCore.Session, как на следующем рисунке

enter image description here

Если есть повар ie, проблема, вероятно, не в обработке данных сеанса, а в другом месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...