C # - HttpRequest запрашивает второй учетные данные для входа

1

Я работаю над Windows Universal. В этом приложении я должен показать веб-сайт в веб-просмотре, для которого требуется аутентификация. Я обращаюсь к нему следующим образом:

    Uri url = new Uri("https://ssl.mywebsite.nl/");
    HttpWebRequest http = (HttpWebRequest)HttpWebRequest.Create(url);
    http.Credentials = new NetworkCredential(userName, userPassword);
    HttpWebResponse response = (HttpWebResponse)await http.GetResponseAsync();
    webView.Source = response.ResponseUri;

И это отлично работает на Windows Phone. Тем не менее, на окнах появляется экран, в котором я спрашиваю:

"Сервер ssl.mywebsite.nl запрашивает ваше имя пользователя и пароль. Сервер сообщает, что он из" Пожалуйста, войдите ".

Это ошибка в Windows 8.1, или я пропущу что-то очень очевидное?

  • 0
    Я знаю, что это имеет мало общего с самим вопросом. Но благодаря вашему вопросу я смог предоставить учетные данные, необходимые для сайта. никогда не знал, что у него есть свойство Credentials. Теперь это работает. Большое спасибо.
Теги:
authentication
ssl
win-universal-app

1 ответ

1
Лучший ответ

Поэтому я считаю, что причина, по которой это работала на Windows Phone, но не на рабочем столе Windows, заключалась в том, что она кэшировала учетные данные на Windows Phone, но не в Windows. Это привело к успешным попыткам проверки подлинности Windows Phone. И из-за того, как я пытался отобразить извлеченную информацию в WebView, это означало, что она должна была повторно аутентифицироваться, что привело к успешному отображению на Windows Phone, но не удалось отобразить (или, скорее, вопрос для аутентификации) в Windows.

Решение:

string encoded = Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1")
    .GetBytes(userName + ":" + userPassword));
HttpRequestMessage mess = new HttpRequestMessage(HttpMethod.Get, 
    new Uri("https://ssl.mywebsite.nl/"));
mess.Headers.Add("Authorization", "Basic " + encoded);
webView.NavigateWithHttpRequestMessage(mess);

Этот метод позволяет запросу всегда использовать данные учетные данные, поэтому не просит пользователя предоставить их.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню