Я управляю внутренним порталом 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");