我在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。
答案 0 :(得分:0)
有一种方法可以通过为WebBrowser控件提供自定义 IOleClientSite 对象来实现此目的,该对象还实现 IServiceProvider 和 IAuthenticate 接口。通过 IAuthenticate ,您将提供您的凭据。这种方法涉及一些黑客攻击。您可以参考这篇优秀博客post了解实施细节。