Коллекция Sharepoint не была инициализирована в asp.net при нажатии кнопки - C# asp.net

Я новичок в Sharepoint, и после ссылки на url - Доступ к SharePoint онлайн с использованием клиентской объектной модели - Запрещенная ошибка мне удалось успешно подключиться к sharepoint и получить сведения в консольном приложении C#. Моя проблема в том, что когда я переместил тот же код на веб-сайт asp.net, он дает мне ошибку «Коллекция не была инициализирована». Вот код

using (ClientContext clientContext = new ClientContext("https://.../sites/.../"))
        {
            SecureString passWord = new SecureString();

            foreach (char c in "abcdefghijklmnop".ToCharArray()) passWord.AppendChar(c);
            clientContext.Credentials = new SharePointOnlineCredentials("[email protected]", passWord);
            List list = clientContext.Web.Lists.GetByTitle("ABC DEF");
            CamlQuery camlQuery = new CamlQuery();
            camlQuery.ViewXml = "<View><RowLimit>1200</RowLimit></View>";
            ListItemCollection collListItem = list.GetItems(camlQuery);
            clientContext.Load(collListItem, li => li.Include(
                            pi => pi.Id,
                            pi => pi["Title"],
                            pi => pi["Application"],
                            pi => pi["URL"],
                            pi => pi["AIR_x0020_ID"]

                ));

            clientContext.ExecuteQuery();
            List<string> listofapplications = new List<string>();
            foreach (ListItem oListItem in collListItem)
            {
                { Console.WriteLine(oListItem["Title"] + ", Application " + oListItem["Application"]); }
            }
            Console.ReadLine();
        }

Это дает мне ошибку в foreach (Listitem oListItem в collListItem):

An exception of type 'Microsoft.SharePoint.Client.CollectionNotInitializedException' occurred in Microsoft.SharePoint.Client.Runtime.dll but was not handled in user code

Additional information: The collection has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.

Вот подробная ошибка:

Microsoft.SharePoint.Client.CollectionNotInitializedException was unhandled by user code HResult=-2146233079 Message=The collection has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.
Source=Microsoft.SharePoint.Client.Runtime StackTrace: at Microsoft.SharePoint.Client.ClientObjectCollection`1.d__0.MoveNext() at Home.btn_Click(Object sender, EventArgs e) in c:\Users\rakesh.a.srivastava\Documents\Visual Studio 2015\WebSites\DNSProvisioningPortal\Home.aspx.cs:line 45 at System.Web.UI.WebControls.Button.OnClick(EventArgs e) at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:

Обратите внимание: у меня нет проблем с консольным приложением, но с нажатием кнопки asp.net. Я также добавил ссылки на Client и Client.Runtime! Я не могу понять, почему он работает в консоли, но не работает на веб-сайте. Мне не хватает какого-либо пространства имен, ссылки? Я сослался на эти URL-адреса Коллекция не инициализирована, Поле Sharepoint не было инициализировано в C#, Клиентская объектная модель Sharepoint Свойство или поле не инициализировано, но ничего не говорит мне о моей проблеме. Пожалуйста помоги. Спасибо

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
3 564
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основываясь на моем тесте, иногда мы можем игнорировать исключение в проекте aspnet. (Для вашего кода вам необходимо заменить ["XXX"] на Client_XXX)

Подготовка

Установите Microsoft.SharePointOnline.CSOM с помощью диспетчера пакетов NuGet для проецирования.

Мой тестовый код: Сначала метод расширений (необязательно для вас)

public static class CSOMExtensions
    {
        public static Task ExecuteQueryAsync(this ClientContext clientContext)
        {
            return Task.Factory.StartNew(() =>
            {
                clientContext.ExecuteQuery();
            });
        }
    }

Замените код из вашего сообщения моим:

 List list = clientContext.Web.Lists.GetByTitle("CustomList1");
 CamlQuery camlQuery = new CamlQuery();
 camlQuery.ViewXml = "<View><RowLimit>1200</RowLimit></View>";
 ListItemCollection collListItem = list.GetItems(camlQuery);

 clientContext.Load(collListItem, li => li.Include( 
                        pi => pi.Client_Title
                      //pi => pi["Application"],
                      // pi => pi["AIR_x0020_ID"]
            ));

//clientContext.ExecuteQueryAsync();

Task t2 = clientContext.ExecuteQueryAsync();

await t2.ContinueWith((t) =>
{
   foreach (ListItem oListItem in collListItem)
   {
     System.Diagnostics.Debug.WriteLine(oListItem.Client_Title); 
   }
});

Если мы используем ["Title"] напрямую, он выйдет из строя в aspnet, но Client_XXX не будет на моей стороне.

У меня нет более глубокого исследования, почему, и я не пробовал настраиваемые поля. Я буду исследовать больше, пока у меня будет время

Привет, Сейя, я не вижу Client_Title, мне не хватает ссылки? using System; using Microsoft.SharePoint.Client; using System.Security; using System.Threading.Tasks;Ошибка:ListItem не содержит определения Client_Title, вам не хватает какой-либо ссылки

rs1 13.08.2018 10:59

Я добавляю библиотеки CSOM от Nuget, можете попробовать. Я предполагаю, что локальные библиотеки DLL из шаблона VS SharePoint могут быть не самыми последними, я не уверен в этом.

Seiya Su 13.08.2018 11:16

Отлично, сработало !!! Сохранил свой код и обновил свои dll, и теперь все работает гладко :) Большое спасибо :) Я пометил это как ответ, к сожалению, он не регистрирует мой голос. Для всех, кто сталкивается с этой проблемой, используйте приведенный выше код и удалите все ссылки на sharepoint! в диспетчере пакетов NuGet найдите Microsoft.SharePointOnline.CSOM и установите! Это должно решить проблему. Спасибо, Сейя! :)

rs1 13.08.2018 12:13

Другие вопросы по теме