У меня есть следующий код, который используется в двух проектах веб-приложений, оба из которых являются частью одного и того же решения. Эти два проекта взаимодействуют друг с другом, один содержит веб-сервис и код, который создает коллекцию Pivot Viewer (изображения CXML +), а другое представляет собой простое веб-приложение, на котором размещена страница контейнера, отображающая элемент управления Pivot Viewer.Настройка SharePointOnlineCredentials - катастрофический сбой - COMException
Эти два проекта должны взаимодействовать с сайтом SharePoint, который содержит пару списков. Списки содержат данные, используемые для сборки коллекции CXML и для доступа к элементам данных, выставленным коллекцией. В обоих проектах существует следующий код.
using SP = Microsoft.SharePoint.Client;
///.......
string siteURL = ConfigurationManager.AppSettings["SharePointURL"];
ClientContext clientContext = new ClientContext(siteURL);
string listName = ConfigurationManager.AppSettings["ListName"];
SP.List downloadRequestList = clientContext.Web.Lists.GetByTitle(listName);
string username = ConfigurationManager.AppSettings.Get("SharePointCredentialUsername");
string userkey = ConfigurationManager.AppSettings.Get("SharePointCredentialPassword");
SecureString securekey = new SecureString();
for (int i = 0; i < userkey.Length; i++)
securekey.AppendChar(userkey[i]);
SharePointOnlineCredentials credentials = new SharePointOnlineCredentials(username, securekey);//error occurs here
clientContext.Credentials = credentials;
Код выполняется без проблем в одном проекте (веб-службы), другой проект (веб-приложения) бросает COMException на линии, где конкретизируется SharePointOnlineCredentials (2-й снизу в фрагменте кода выше).
Сведения об исключении:
Сообщение: { "Разрушительный сбой (Исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED))"}
Источник "Microsoft.SharePoint.Client.Runtime"
HRsult/ErrorCode -2147418113
StackTrace в Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.EnsureInited() в Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.LogonIdentity (String имя пользователя, пароль) SecureString в Microsoft.SharePoint.Client.SharePointOnlineCredentials..ctor (строка имя пользователя, пароль SecureString) в PivotServer.Download.SaveDownloadListItem() в download.aspx.cs: линия 104
Я соответствовал файл web.config для обоих проектов, они содержат одни и те же элементы. Связанная нить предложила установить идентификатор пула приложений в «Local System», что не повлияло.
Заранее благодарен за любые советы, предложения, образцы образцов, которые высоко ценятся.
Это действительно не требуется, и, вероятно, это не очень хорошая идея, так как экземпляр веб-роли может быть перезагружен в любой момент, и ваши шаги с руководством не будут выполняться через пакет. Вам просто нужно изменить ваши файлы ServiceConfiguration.cscfg azure, чтобы установить роль веб-сайта с повышенными разрешениями. Кроме того, библиотеки DLL SharePoint (Microsoft.SharePoint.Client и .Runtime.dll) должны быть добавлены в качестве ссылок на ваш ролевой проект (ы) с помощью CopyLocal = true. Таким образом, вам не нужно устанавливать клиентский SDK на серверы. –