Редактирование списка 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 и делать следующее:

  1. Установите другое значение агента пользователя в конструкторе.
  2. Установите для свойства "preauthenticate" значение true. Это должно заставить клиента отправлять учетные данные в первом запросе, а не только после того, как они были запрошены.
  3. При необходимости попробуйте явно указать учетные данные.

Смотрите пример ниже.

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");
    }
}
Другие вопросы по тегам