Проблемы с аутентификацией прокси - PullRequest
1 голос
/ 21 января 2011

Я управляю внутренним порталом SharePoint (Moss 2007), на котором есть веб-части, некоторые из которых получают RSS-каналы из новостей Yahoo, а другие - из финансов Yahoo (ежедневные графики фондового рынка), а другой - с текущей погодой от NOAA.Все эти работы, кроме новостей Yahoo.Я получаю сообщение об ошибке:

Удаленный сервер возвратил ошибку: (407) Требуется проверка подлинности прокси.

Однако, если я запускаю код локально на моем компьютере разработчика(Win 7) (VS2010) как веб-приложение, новый фид работает нормально.Я понимаю, что это проблема аутентификации, но я не могу получить никакой помощи от наших сотрудников по информационной безопасности.

Разница между сервером и моей рабочей станцией заключается в том, что я вхожу в систему с помощью магнитной карты и аутентифицируюсь в домене.Браузер, который использует мой компьютер, проходит через прокси-сервер, в котором есть некоторые исключения, включая портал SharePoint.Обход прокси для локальных адресов проверен.Сам сервер заблокирован от любого прямого (или через прокси) доступа в Интернет, поэтому запросы на аутентификацию должны быть закодированы.

Я не писал этот код, но он отлично работает на одном сервере, но не включаетсямой сервер SharePoint.Я старательно сравнил настройки и обнаружил, что на сервере, где он используется в качестве веб-виджета, он работает нормально.Веб-сайт использует олицетворение, используя учетную запись домена.Если я использую олицетворение в SharePoint, я вхожу в систему с учетной записью олицетворения, а не со своими учетными данными.Вы все еще со мной?

Таким образом, этот код получает информацию о прокси-сервере, но без каких-либо учетных данных:

WebRequest myRequest = WebRequest.Create(rssURL);
string[] arrProxy = System.Configuration.ConfigurationManager.AppSettings["ProxyServer"].Split(new Char[] { ',' });
myRequest.Proxy = new System.Net.WebProxy(arrProxy[0], Convert.ToInt32(arrProxy[1]));

WebResponse myResponse = myRequest.GetResponse();

Stream rssStream = myResponse.GetResponseStream();
XmlDocument rssDoc = new XmlDocument();
rssDoc.Load(rssStream);

XmlNodeList rssItems = rssDoc.SelectNodes("rss/channel/item");

1 Ответ

1 голос
/ 21 января 2011

Можете ли вы установить Credentials по запросу:

HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Credentials = new NetworkCredential("username", "password", "domain");

Полагаю, либо с вашей учетной записью, либо попросите ИТ-специалистов создать специальную учетную запись "server-webaccess".

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