Редактирование списка SharePoint2010 из приложения Out side windows.
На самом деле я пытаюсь добавить элементы в список точек обмена из приложения Windows. Все идет хорошо, когда я добавил веб-ссылку и смог получить все предложения, перечисленные для Lists.asmx. Когда я выполняю свою программу и пытаюсь вызвать listServiceObj.GetListAndview("Customers",""); Это выдает ошибку "Запрос не выполнен с HTTP-статусом 401: не авторизован". Обратите внимание, что в это время мои учетные данные и URL ссылки на службу были;
SpListService.Lists spListService = new SpListService.Lists();
spListService.Credentials = System.Net.CredentialCache.DefaultCredentials;
spListService.Url = "http://localhost/_vti_bin/Lists.asmx";
XmlNode customerListView = spListService.GetListAndView("Customers", "");
Затем я изменил приведенный выше код на;
SpListService.Lists spListService = new SpListService.Lists();
spListService.Credentials = System.Net.CredentialCache.DefaultCredentials;
spListService.Url = "http://<PC-Name>/sites/Home/_vti_bin/Lists.asmx";
XmlNode customerListView = spListService.GetListAndView("Customers", "");
затем я получил следующую ошибку;
"Возникло исключение типа" Microsoft.SharePoint.SoapServer.SoapServerException ".
Я сделал зарегистрированного пользователя в группе полного контроля. также член группы администраторов... но тот же результат.... Также обратите внимание, что при попытке получить доступ к "http://localhost/" или "http:///", я получаю страницу с отказом в доступе SP2010.... Вместо этого я должен написать "http:///sites/Home/SitePages/Home.aspx", чтобы открыть семейство сайтов группы
Я действительно застрял в этом.... было бы очень приятно иметь какое-то решение этой моей проблемы...... Заранее спасибо, MJay
1 ответ
У меня была похожая проблема, когда я реализовал свой первый клиент веб-службы списков SharePoint. Причина была в том, что автоматически сгенерированный клиентский класс фактически представлялся как веб-браузер Mozilla! Сервер SharePoint не разрешил базовую аутентификацию для браузеров, поэтому клиент фактически был перенаправлен на страницу входа в систему брандмауэра.
Я предлагаю вам наследовать другой класс от класса Lists и делать следующее:
- Установите другое значение агента пользователя в конструкторе.
- Установите для свойства "preauthenticate" значение true. Это должно заставить клиента отправлять учетные данные в первом запросе, а не только после того, как они были запрошены.
- При необходимости попробуйте явно указать учетные данные.
Смотрите пример ниже.
public class CustomizedLists : Lists
{
public CustomizedLists() : base()
{
this.UserAgent = "Some SharePoint client";
this.PreAuthenticate = true;
System.Net.ICredentials creds = new System.Net.NetworkCredential("user", "pwd");
this.Credentials = creds.GetCredential(uri, "Basic");
}
}