Вызовы Project Server 2013 PSI из Sharepoint 2013

Я переношу код с 2010 на 2013 год.

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

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

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

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

Мне отказано в доступе.

Спасибо


person David    schedule 19.02.2013    source источник
comment
Вы уже изменили свой app.config? Посмотрите на вторую половину мой ответ здесь, чтобы увидеть раздел, который вам нужно изменить.   -  person Kit Menke    schedule 20.02.2013
comment
@Kit в моем случае это будет web.config. Я настраиваю клиента по коду, поэтому в файле web.config ничего нет. this.HttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);this.HttpBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;   -  person David    schedule 04.03.2013


Ответы (2)


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

person Ariwibawa    schedule 12.08.2016
comment
должен быть комментарий - person Inzimam Tariq IT; 12.08.2016
comment
Я не мог добавить комментарий - person Ariwibawa; 02.12.2016

Сначала вам нужно войти в 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;
}
person Ravin Chand    schedule 25.05.2016
comment
Ваше решение не соответствует моей потребности. Я хочу использовать текущие учетные данные пользователя, а не жестко заданные ... - person David; 03.06.2016