我管理一个内部SharePoint门户(Moss 2007),其中包含webparts,其中一些从雅虎新闻获取RSS源,而另一些来自雅虎财经(每日股票市场图表),另一个来自NOAA的当前天气。所有这些工作除了雅虎新闻。我得到的错误是:
远程服务器返回错误:(407)需要代理验证。
但是,如果我在我的开发盒(Win 7)(VS2010)上本地运行代码作为Web应用程序,新的Feed可以正常工作。我知道这是一个身份验证问题,但我无法从我们的IT安全人员那里获得任何帮助。
服务器和我的工作站之间的区别在于我使用磁卡登录并对域进行身份验证。我的PC使用的浏览器通过一个代理,该代理列出了一些例外,包括SharePoint门户。检查本地地址的旁路代理。该服务器本身被锁定在任何直接(或通过代理)互联网访问,因此必须对身份验证请求进行编码。
我没有编写此代码,但它在一台服务器上运行正常但在我的SharePoint服务器上运行不正常。我努力比较设置,发现在用作Web小部件的服务器上,它工作正常。该网站使用域帐户进行模拟。如果我在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");
答案 0 :(得分:1)
您可以在请求中设置Credentials
:
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
request.Credentials = new NetworkCredential("username", "password", "domain");
我想您的帐户或者让IT人员创建一个特殊的“server-webaccess”帐户。