Лучший способ извлечения данных внешнего списка из одной фермы SP в другую?

#c# #xml #sharepoint #sharepoint-2007 #active-directory

#c# #xml #sharepoint #sharepoint-2007 #active-directory

Вопрос:

Я думал об использовании owssvr, предоставлении идентификатора GUID списка, а затем просто разборе этих данных. Есть ли какие-либо лучшие методы? Мне нужно предоставить учетные данные для получения этих данных, мне нужна учетная запись, которая может, по крайней мере, аутентифицироваться в AD. (Требования внутренней безопасности).

Мой базовый вызов будет выглядеть так:

 //XmlDocument xDoc = new XmlDocument();
                    //xDoc.Load("<localsite>/_vti_bin/owssvr.dll?Cmd=Displayamp;List={8C3DE28C-00EF-40CE-8FD1-2D76D7F85426}amp;XMLDATA=TRUE");//hard coded for testing
/*This is where I'd parse the xDoc*/
  

Есть ли лучший способ сделать это? На данный момент я застрял с проблемой учетных данных. Обе фермы — SharePoint 2007, могут ли они лучше использовать общий доступ?

Ответ №1:

Попробуйте это:

 var xmlUrlResolver = new XmlUrlResolver { Credentials = CredentialCache.DefaultCredentials };
var xmlTextReader = new XmlTextReader("http://yoururl") { XmlResolver = xmlUrlResolver };

var xDoc = XDocument.Load(xmlTextReader);
  

Возможно, вы сможете еще больше сократить этот код, но это даст вам некоторое направление для дальнейшего изучения.
Обратите внимание, что я использую классы .NET 4 LINQ to XML.

Для версии Xml DOM первые 2 строки остаются неизменными:

 var xDoc = new XmlDocument();
xDoc.Load(xmlTextReader);
  

Комментарии:

1. Как ни странно, это работало, но теперь, после того, как я выполнил IISRESET для извлечения данных из ящика, я не могу заставить его извлекать данные с внешнего сайта SP. Знаете ли вы, что могло измениться?

2. Я завернул это в SPSecurity. RunWithElevated() и это работает. Это хорошая практика? Спасибо,