Коллекция 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("myname@mydomain.com", 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 Свойство или поле не инициализировано, но ничего не говорит мне о моей проблеме. Пожалуйста помоги. Спасибо

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

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