2015-02-24 40 views
0

我想从我的代码页面后面获取Web API,并且从Web Api获取响应后,我总是失去会话值。调用Web 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 

这是使用异步修饰符的方法,不知道是否可能导致类似这样的事情。

+0

您正在使用2个不同的会话对象来描述问题。你是说在LoggedClientName行测试'HttpContext.Current.Session(“UserName”)'是引用存在的地方,而后来在不存在的地方呢? – 2015-02-24 17:57:20

+0

对不起,它应该是一样的。现在编辑。 – devSuper 2015-02-24 17:59:02

+0

我不会说你的是一个直接重复,但也许这个相关的问题的答案可能有所帮助:http://stackoverflow.com/questions/27672598/windows-phone-8-1-httpclient-and-session-cookies – 2015-02-24 18:02:09

回答

0

你可以看看ASP.NET Web API session or something?:作为第一个回应,webapi是无状态的,this link解释了原因。

如果您需要存储信息,您可能需要将它们存储在cookie中(不推荐)或将它们存储在应用程序缓存中,并以cookie值作为密钥。

+0

我只是在尝试使用一个Web Api,所以我不明白为什么会在我的Web表单中设置的会话值丢失。 – devSuper 2015-03-17 12:41:32