我有一個使用基於cookie的會話進行內部使用的Web API 2項目。我創建了/api/login
和/api/logout
動作,並且使用瀏覽器可以正常工作以訪問它。在HttpClient調用中重用會話cookie
我正在嘗試使用HttpClient
來創建一個C#客戶端來與API進行通信。我可以通過登錄罰款:
Uri loginUri = new Uri("http://localhost/api", "login");
HttpResponseMessage response = _http.PostAsJsonAsync(loginUri, loginModel).Result;
,我還可以通過
var cookies = _httpHandler.CookieContainer.GetCookies(uri);
if (cookies["session_id"] != null)
sessionID = cookies["session_id"].Value;
我的問題是得到Cookie中的會話ID字符串:對於包括註銷請求每個後續請求,怎麼辦我在請求標頭中包含session_id
cookie?如果可能,我希望在會話期間重用HttpClient
對象。我看到了this question and answer,但它用於調用登錄,執行操作以及在同一請求中註銷。
謝謝!
只是出於好奇,你爲什麼要使用Web API會話? – kaptan
您需要將會話ID放入哪個請求標頭?如果它是cookie標頭,那麼這將自動發生。否則使用DefaultRequestHeaders。 –
@kaptan我需要保持與舊服務器的TCP連接保持活動狀態。 @DarrelMiller我需要在Set-Cookie頭中。我試過了。當我發出下一個請求時,'session-id' Cookie不在。 – Ionian316