C#-HttpRequest请求第二次登录凭据

C#-HttpRequest请求第二次登录凭据,c#,authentication,ssl,win-universal-app,C#,Authentication,Ssl,Win Universal App,我正在开发一个Windows通用应用程序。在这个应用程序中,我必须在webview中显示一个需要身份验证才能访问的网站。我通过以下方式访问它: Uri url = new Uri("https://ssl.mywebsite.nl/"); HttpWebRequest http = (HttpWebRequest)HttpWebRequest.Create(url); http.Credentials = new NetworkCredential(userName, u

我正在开发一个Windows通用应用程序。在这个应用程序中,我必须在webview中显示一个需要身份验证才能访问的网站。我通过以下方式访问它:

    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上运行得非常好。然而,在windows上,我会看到一个屏幕,要求我登录,上面写着:

“服务器ssl.mywebsite.nl正在询问您的用户名和密码。 服务器报告它来自,请登录。“


这是Windows 8.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);

此方法允许请求始终使用给定的凭据,因此不要求用户提供凭据。

我知道这与问题本身无关。但由于你的问题,我能够提供网站所需的凭证。从不知道它有凭证属性。现在它正在工作。谢谢。