C# Winform: автоматический вход на сервер отчетов с использованием веб-браузера

Я хочу получить доступ к серверу отчетов asp.net с помощью приложения Windows Forms (в частности, элемента управления веб-браузера).

Я уже могу загрузить страницу (с помощью нажатия кнопки), однако веб-браузер все еще запрашивает у меня имя пользователя и пароль сервера отчетов.

Как автоматически установить имя пользователя и пароль сервера отчетов таким образом, чтобы при загрузке веб-браузера система безопасности Windows не предлагала пользователю ввести имя пользователя и пароль?

2 ответа

Вы можете попробовать следующее, и это будет работать для вас

        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.

Другие вопросы по тегам