0

Я пытаюсь использовать веб-API из моего кода за страницей и после получения ответа от Web Api, я всегда теряю значения сеанса.Потеря значений сеанса после вызова веб-API

Dim formatter As New JsonMediaTypeFormatter() 
    Using client = New HttpClient() 
    Dim chkValue = HttpContext.Current.Session("UserName") // Has a value here 
     client.BaseAddress = New Uri(apiAddress) 
     client.DefaultRequestHeaders.Accept.Clear() 
     client.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("application/json")) 
     Dim response As HttpResponseMessage = Await client.PostAsync("requestURI", "customObject", "formatter") 
     If response.IsSuccessStatusCode Then 
       HttpContext.Current.Session("UserName") // Referenced object has value of nothing 
     Else 

     End If 
    End Using 

Это метод, использующий модификатор Async, но не уверен, что это может привести к чему-то подобному.

+0

Вы используете 2 разных объекта сеанса для описания проблемы. Вы говорите, что тестирование 'HttpContext.Current.Session (« UserName »)' в строке LoggedClientName является ссылкой, где существует ссылка, а не позже в методе, где это не так? –

+0

Извините, он должен быть таким же. Отредактировано сейчас. – devSuper

+0

Я бы не сказал, что ваш является прямым дубликатом, но, возможно, ответ на этот связанный вопрос может помочь: http://stackoverflow.com/questions/27672598/windows-phone-8-1-httpclient-and-session-cookies –

ответ

0

Вы можете посмотреть на ASP.NET Web API session or something?: По состоянию на первый ответ webapi не имеет гражданства, this link объясняет, почему.

Если вам нужно хранить информацию, возможно, вам необходимо сохранить их в файле cookie (не рекомендуется) или сохранить их в кеше приложения с указанием значения cookie в качестве ключа.

+0

Я только пытаюсь использовать Web Api. Поэтому я не понимаю, почему значения сеанса, установленные в моих веб-формах, теряются. – devSuper

Смежные вопросы