2013-02-19 2 views
1

Я миграции кода с 2010 по 2013 годProject Server 2013 PSI вызовы от Sharepoint 2013

У меня есть пользовательский элемент управления, что я раскрываю в Sharepoint, который вызывает PSI. В 2010 году он работал хорошо. Теперь в 2013 году и при проверке претензий я всегда получаю: «HTTP-запрос неавторизован с помощью схемы проверки подлинности клиента« Ntlm ». Заголовок аутентификации, полученный с сервера, был« NTLM, Negotiate ».» когда я вызываю любой PSI (даже GetCurrentUserUid) с любым пользователем (даже администратором проекта).

Похоже, учетные данные не передаются в PSI, и они называет их анонимными. Кто-нибудь может помочь?

Другой пример кода, который я выполнить из Sharepoint:

ProjectContext projContext = new ProjectContext(PROJECT_SERVER_URL); 
projContext.Load(projContext.EnterpriseResources); 
projContext.ExecuteQuery(); 

я получаю доступ запрещен.

СООБЩЕНИЕ

+0

ли вы изменить свой app.config еще? Посмотрите на вторую половину [мой ответ здесь] (http://stackoverflow.com/questions/2608887/sharepoint-web-services-the-http-request-is-unauthorized-with-client-authenti/2609909#2609909) чтобы увидеть раздел, который вам нужно будет изменить. –

+0

@ Kit в моем случае это будет web.config. Я настраиваю клиента по коду, поэтому в web.config ничего нет. 'this.HttpBinding = new BasicHttpBinding (BasicHttpSecurityMode.TransportCredentialOnly); this.HttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;' – David

ответ

-1

Сначала необходимо подключиться к SharePoint. Бит ниже даст вам действительный контекст.

public static ProjectContext GetContext() 
{ 
    ProjectContext projContext; 
    using (projContext = new ProjectContext("pwaUrl"])) 
    { 
     SecureString passWord = new SecureString(); 

     foreach (char c in "yourPassword".ToCharArray()) passWord.AppendChar(c); 

     projContext.Credentials = new SharePointOnlineCredentials("youremailaddress", passWord); 
    } 
    return projContext; 
} 
+0

Ваше решение не соответствует моей потребности. Я хочу использовать текущие учетные данные пользователя, а не жестко закодированные ... – David

0
public static ProjectContext GetContext() 
    { 
     ProjectContext projContext; 
     using (projContext = new ProjectContext("pwaUrl")) 
     { 
      SecureString passWord = new SecureString(); 

      foreach (char c in "YourEmailPassword".ToCharArray()) passWord.AppendChar(c); 

      projContext.Credentials = new SharePointOnlineCredentials("YourEmail", passWord); 
     } 
     return projContext; 
    } 
0

Вы пробовали настройки учетных данных с помощью projContext.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

+0

должен быть комментарий –

+0

Это было давно, но я думаю, что я пробовал – David

+0

Я не мог добавить комментарий – Ariwibawa