2015-02-24 63 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