Настройка заголовка аутентификации для элемента управления WebBrowser - ASP.NET - PullRequest
7 голосов
/ 09 июня 2011

Я использую элемент управления WebBrowser в своем приложении asp.net для создания скриншотов веб-страниц. Я мог генерировать изображения, пока не изменил учетную запись пула приложений. Я предоставил новому пулу приложений все необходимые права, и я могу просматривать свои страницы из IE. Но когда я перемещаюсь к нему через веб-браузер программно, я получаю 401.2. Я установил «Правила отслеживания невыполненных запросов» в своем IIS 7.0 и использовал Fiddler для анализа запросов, и обнаружил, что заголовок аутентификации неверен.

Но в webbrowser.navigate есть перегруженный метод, в котором мы можем передавать пользовательские заголовки http. Как я могу установить это? Я просто хочу использовать встроенную аутентификацию и не хочу указывать имя пользователя / пароль в коде, потому что я могу этого не знать. Но все же я попробовал следующий код без удачи.

System.Uri uri = new Uri(myUrl);
byte[] authData = System.Text.UnicodeEncoding.UTF8.GetBytes("user: passwd");
string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + "\r\n";
myBrowser.Navigate(uri, "", null, authHeader);

Любые идеи, как установить заголовок с другими деталями, такими как useragent тоже?

1 Ответ

4 голосов
/ 09 июня 2011

Если вы хотите включить пользовательский агент в заголовок, вы, вероятно, должны сделать что-то вроде этого:

string authHeader = "Authorization: Basic " + Convert.ToBase64String(authData) + 
        "\r\n" + "User-Agent: MyUserAgent\r\n";

Просто помните, что каждый заголовок должен заканчиваться парой перевода строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...