0

我在 IIS 上有基本身份验证。我的 WPF 应用程序使用 WebBrowser 连接到在 IIS 上发布的 Silverlight 应用程序。我尝试了不同的方法来预定义凭据。像那样:

Uri uri = new Uri("http://1.1.1.1/MyApp");
byte[] authData = System.Text.UnicodeEncoding.UTF8.GetBytes("user: password");
string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + "\r\n";
this.browser.Navigate(uri, "", null, authHeader);

但是这个问题不起作用。我只能这样做:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
CredentialCache credentials = new CredentialCache();
credentials.Add(
   uri, "Basic",
   new NetworkCredential("user", "password"));
   request.Credentials = credentials;
   request.PreAuthenticate = true;
   WebResponse response = request.GetResponse();
   this.browser.NavigateToStream(response.GetResponseStream());

但在那种情况下,我不能使用 Silverlight.js 和所有其他样式和 javascript。

4

1 回答 1

0

有一种方法可以通过为 WebBrowser 控件提供自定义IOleClientSite对象来实现此目的,该对象还实现了IServiceProviderIAuthenticate接口。通过IAuthenticate,您将提供您的凭据。这种方法涉及一些技巧。你可以参考这篇优秀的博客文章来了解实现细节。

于 2013-08-05T14:41:56.110 回答