Доступ к сеансу с помощью веб-API ASP.NET - PullRequest
254 голосов
/ 07 марта 2012

Я понимаю, что сессия и REST точно не идут рука об руку, но нельзя ли получить доступ к состоянию сеанса с помощью нового веб-API? HttpContext.Current.Session всегда равно нулю.

Ответы [ 12 ]

3 голосов
/ 31 августа 2015

В ответе @LachlanB нужно упомянуть одну вещь.

protected void Application_PostAuthorizeRequest()
    {
        if (IsWebApiRequest())
        {
            HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
        }
    }

Если вы пропустите строку if (IsWebApiRequest())

Весь сайт будет иметь проблему с медлительностью загрузки страниц, если ваш сайт смешан со страницами веб-форм.

0 голосов
/ 23 октября 2013

Возвращаясь к основам, почему бы не сделать это простым и сохранить значение Session в скрытом html-значении для передачи в API?

Контроллер

public ActionResult Index()
        {

            Session["Blah"] = 609;

            YourObject yourObject = new YourObject();
            yourObject.SessionValue = int.Parse(Session["Blah"].ToString());

            return View(yourObject);
        }

cshtml

@model YourObject

@{
    var sessionValue = Model.SessionValue;
}

<input type="hidden" value="@sessionValue" id="hBlah" />

Javascript

$ (документ) .ready (function () {

    var sessionValue = $('#hBlah').val();

    alert(sessionValue);

    /* Now call your API with the session variable */}

}

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