Сначала я создал HttpClientHandler с контейнером cookie.
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);
Затем я получаю сообщение об ошибке сервера «Необходимое поле формы защиты от подделки __RequestVerificationToken отсутствует».
Но когда я проверяю запрос в fiddler, я вижу, что «__RequestVerificationToken» уже добавлен в файлы cookie запроса.
Затем я попытался войти вручную в IE и проверить, какой запрос отправил IE.
Затем я обнаружил, что IE также помещает «__RequestVerificationToken» в форму, поэтому я добавил файл cookie в форму.
new KeyValuePair<string, string>("__RequestVerificationToken", cookies.GetCookies(new Uri(BaseUrl)).Cast<Cookie>().FirstOrDefault(x => x.Name == "__RequestVerificationToken").Value)
Затем я получил эту ошибку
"Проверка предоставленного токена защиты от подделки не удалась. Файл cookie _RequestVerificationToken и поле формы_RequestVerificationToken поменялись местами".
Тогда я не смог получить результат поиска в Google для этой ошибки.
Есть идеи?
Спасибо