2014-01-02 2 views
0

Я новичок в sharepoint, я использую sharepoint онлайн, и я пишу код, чтобы просто печатать названия сайтов и дату создания. Вот мой код:SharePointOnlineCredentials бросает System.Runtime.Interopservices.COMException в консольном приложении

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Microsoft.SharePoint.Client; 
using System.Security; 

namespace SharepointAccessList 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      using (ClientContext clientContext = new ClientContext("https://{sitename}.sharepoint.com//")) 
      { 
       SecureString password = new SecureString(); 

       foreach (char c in "{mypassword}".ToCharArray()) password.AppendChar(c); 

       clientContext.Credentials = new SharePointOnlineCredentials("{myusername}", password); 

       Web oWebsite = clientContext.Web; 
       clientContext.Load(oWebsite); 
       clientContext.ExecuteQuery(); 

       Console.WriteLine("Title: {0} Created: {1}", oWebsite.Title, oWebsite.Created); 
      } 
     } 
    } 
} 

Сначала я не имел DLL файлы Microsoft.Sharepoint.client.dll и Microsoft.Sharepoint.client.runtime.dll поэтому я установил Sharepoint Client SDK от Microsoft, и я получил DLL-файлы в моих файлах C: \ Program Files \ Common Files \ Microsoft Shared \ Web Server Extensions \ 15 \ ISAPI.

на выполнение кода я получаю исключение на следующей строке:

clientContext.Credentials = new SharePointOnlineCredentials("{myusername}", password); 

Исключение:

System.Runtime.InteropServices.COMException { "Разрушительный сбой (Исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED)) "}

Трассировка стека:

at Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.EnsureInited() 
    at Microsoft.SharePoint.Client.Idcrl.ManagedIdcrl.LogonIdentity(String username, SecureString password) 
    at Microsoft.SharePoint.Client.SharePointOnlineCredentials..ctor(String username, SecureString password) 
    at SharepointAccessList.Program.Main(String[] args) in c:\Users\Fortune4\Documents\Visual Studio 2012\Projects\SharepointAccessList2\SharepointAccessList2\Program.cs:line 21 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 

Для разъяснения, я поступил правильные учетные данные, и нет ничего плохого в коде, так как выше тот же код работает отлично на другой системе, которая имеет Windows 8 32 бит ОС и Visual Studio 2013.

Он не работает на моих других 2 системах, работающих под управлением Windows 7 и 8, как на 64 бит. это имеет какое-либо отношение к Windows? Извините за длинный пост, но были похожие вопросы о stackoverflow, на котором я не мог найти свой ответ, поэтому я хотел сузить свою проблему.

+0

Работает ли это ?: clientContext.Credentials = новый NetworkCredential (myusername, password); –

+0

nope Я попробовал этот метод перед использованием SharepointOnlineCredentials, но сервер выдает 403 запрещенную ошибку во время выполнения. –

ответ

0

Пожалуйста, установите SharePoint Server 2013 Client Components SDK.

Компоненты клиента также содержат требуемую библиотеку COM, см. Соответствующий link.

+0

Я установил sdk на первом месте, я упомянул об этом в своем вопросе. –

2

имеет ту же ошибку, решается с установкой sharepoint.client 16 версии в NuGet консоли PM> Install-Package Microsoft.Sharepoint.2013.Client.16

спасибо ребята!

Смежные вопросы