我想使用 Windows 窗体应用程序(特别是 Web 浏览器控件)访问 asp.net 报表服务器。
我已经能够加载页面(通过按钮单击),但是,Web 浏览器仍然提示我输入报表服务器的用户名和密码。
如何自动设置报表服务器的用户名和密码,以便在加载 Web 浏览器时,Windows 安全不提示用户输入用户名和密码?
我想使用 Windows 窗体应用程序(特别是 Web 浏览器控件)访问 asp.net 报表服务器。
我已经能够加载页面(通过按钮单击),但是,Web 浏览器仍然提示我输入报表服务器的用户名和密码。
如何自动设置报表服务器的用户名和密码,以便在加载 Web 浏览器时,Windows 安全不提示用户输入用户名和密码?
您可以尝试以下方法,它会为您工作
Uri u = new Uri("http://192.168.0.91");
UriBuilder ub = new UriBuilder(u);
ub.UserName = "admin";
ub.Password = "admin";
webBrowser1.Url = ub.Uri;
以编程方式,您可以使用输入值获取用户名和密码输入元素,WebBrowser.Document还需要调用登录按钮。有一个简单的登录示例,
//After loading web page contents into browser get input as
private void FillAuthentication(string username, string password)
{
if (_mainDialog.WebBrowser.Document == null) return;
var tagsColl = _mainDialog.WebBrowser.Document.GetElementsByTagName("input");
foreach (GeckoElement currentTag in tagsColl)
{
if (currentTag.TagName.Equals("email"))
currentTag.SetAttribute("value", username);
if (currentTag.TagName.Equals("pass"))
currentTag.SetAttribute("value", password);
}
}
现在执行 Click
private void ClickLoginButton()
{
Invoke(new MethodInvoker(() =>
{
try
{
if (_mainDialog.WebBrowser.Document == null) return;
var col = _mainDialog.WebBrowser.Document.GetElementsByTagName("input");
foreach (var element in col.Cast<HtmlElement>().Where(element => element.Name.Trim().Equals("") || element.Name.Trim().Equals("login")))
{
element.InvokeMember("click");
break;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}));
}
在此之后,您还需要按元素检查是否存在任何身份验证错误。
注意:您需要研究整个登录页面的 html 源代码,这样您才能获得所需的元素。其次,下载并导入Skybound.Gecko.dll。