首先我創建的cookie容器HttpClientHandler如何在Windows Store應用程序中使用HttpClient登錄ASP.Net MVC網站(表單身份驗證)?
CookieContainer cookies = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler();
handler.CookieContainer = cookies;
handler.UseCookies = true;
var hc = new HttpClient(handler);
然後我打的基本URL剛拿到的cookie「__RequestVerificationToken」
string r = await hc.GetStringAsync(BaseUrl);
後來我發帖的用戶名/密碼來登錄URL
HttpContent content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("UserName", "admin"),
new KeyValuePair<string, string>("Password", password),
});
HttpResponseMessage response = await hc.PostAsync(LoginUrl, content);
然後我得到的服務器錯誤「所要求的防僞表單字段" __RequestV erificationToken "不存在「。
但是當我在fiddler中檢查請求時,可以看到「__RequestVerificationToken」已經添加到請求的cookie中。
然後我嘗試在IE中手動登錄,並檢查IE發送的請求類型。
後來我發現IE也把「__RequestVerificationToken」的形式,所以我增加了餅乾的形式
new KeyValuePair<string, string>("__RequestVerificationToken", cookies.GetCookies(new Uri(BaseUrl)).Cast<Cookie>().FirstOrDefault(x => x.Name == "__RequestVerificationToken").Value)
然後我得到這個錯誤
「所提供的防僞標記驗證Cookie " _ RequestVerificationToken " and the form field " _RequestVerificationToken " were swapped。「
然後我無法得到任何搜索結果在谷歌這個錯誤。
有什麼想法?
謝謝
感謝這也爲我做了詭計。請將此答覆標記爲答案。 – To1ne 2014-05-23 06:41:24