SharePoint 2013: зачем выдавать ошибку 500 при создании clientContext? - PullRequest
0 голосов
/ 02 июля 2019

Я хочу создать веб-сервис IIS, который должен записывать элементы списка в SharePoint в Premise.

Я хочу использовать CSOM и попытаться создать ClientContext.

public string AddListItem()
string result = string.Empty;
string siteUrl = "https://serverUrl";

using (ClientContext context = new ClientContext(siteUrl))
        {
            context.Credentials = new NetworkCredential("User", "Password", "Domain");
            List list = context.Web.Lists.GetByTitle("Test");
            context.Load(list);
            context.ExecuteQuery();
        }

        return result;
    }

Во время выполнения, Я получаю сообщение об ошибке в context.ExecuteQuery ();

System.Net.WebException: 'Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера.'

В журнале событий я вижу следующую ошибку:

WebHost не удалось обработать запрос.Информация об отправителе: System.ServiceModel.ServiceHostingEnvironment + HostingManager / 41028758 Исключение: System.ServiceModel.ServiceActivationException: служба '/_vti_bin/client.svc' не может быть активирована из-за исключения во время компиляции.Сообщение об исключении: Операция недопустима из-за текущего состояния объекта. ---> System.InvalidOperationException: Операция недопустима из-за текущего состояния объекта.в Microsoft.SharePoint.Administration.SPWebApplication.get_Context () ................................

В отладке я также вижу после создания ClientContext и перед context.ExecuteQuery ();следующая ошибка в некоторых свойствах ClientContext, например:

ServerLibraryVersion = 'context.ServerLibraryVersion' вызвала исключение типа 'Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException'

Ответы [ 4 ]

0 голосов
/ 03 июля 2019

Проверьте, был ли остановлен пул приложений «Корень веб-служб SharePoint» или веб-приложение «Веб-службы SharePoint» не запущено в IIS.

Перейдите в пулы приложений IIS, найдите «SecurityTokenServiceApplicationPool» и нажмите «Расширенные настройки» на панели действий, затем выделите раздел «ProcessModel», измените удостоверение для учетной записи фермы SharePoint и выполните IISRESET.

И создайте консольное приложение с кодом CSOM C #, чтобы проверить, работает ли оно.

0 голосов
/ 02 июля 2019

Попробуйте код ниже

using (ClientContext clientContext = new ClientContext(ServerURL))
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    var securePassword = new SecureString();
    foreach (char c in password)
    {
        securePassword.AppendChar(c);
    }
    clientContext.Credentials = new SharePointOnlineCredentials(your_mail_ID, securePassword);
    Web web = clientContext.Web;
    var list = web.Lists.GetByTitle("your_list_name");
    clientContext.Load(list.RootFolder);
    clientContext.ExecuteQuery();
}
0 голосов
/ 03 июля 2019

Ваш код подходит для предварительной установки SharePoint.Я думаю, что вы должны проверить некоторые настройки на ферме, чтобы быть причиной этого.Проверьте службы на сервере фермы, если служба администрирования IIS включена enter image description here

, также в SharePoint CA проверьте службу профиля пользователя и службу заявок на токены Windows (обе должны быть включены) enter image description here

... извините за язык:) ... обычно у меня есть доступ к SharePoint на языке PL, но я пытался перевести наиболее важные вещи в англ.

Также проверьте, правильно ли работают в IIS пулы приложений, к которым вы пытаетесь получить доступ.Полагаю, да, в противном случае у вас было бы много других ошибок, но всегда лучше проверить.

0 голосов
/ 02 июля 2019

Используйте CSOM, что использовать WCF не понятно:

ClientContextctx = newClientContext("http://gowtham.sharepoint.com");  
            List oList = ctx.Web.Lists.GetByTitle("Announcements");  
            ListItemCreationInformationitemCreateInfo = newListItemCreationInformation();  
            ListItemnewItem = oList.AddItem(itemCreateInfo);  
            newItem["Title"] = "Test Item!";  
            newItem["Body"] = "welcome to Gowtham Blog";  
            newItem.Update();
            context.ExecuteQuery();  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...