CRM 2011 SecurityNegotiationException при попытке доступа к веб-службам - PullRequest
2 голосов
/ 20 мая 2011

Получение неожиданной ошибки при попытке подключения к веб-службе CRM 2011. Вот фон:

Строка подключения (с удалением конфиденциальной информации): "ServiceUri=https://crmdomain.com/OrgName/XRMServices/2011/Organization.svc; Url=https://crmdomain.com/OrgName; Username=appusername; Password=hidden"/>

Создание соединения следующим образом:

  1. Разобрать строку conn в CRMConnection: var conn = Microsoft.Xrm.Client.CrmConnection.Parse(connString); (на этом этапе свойства объекта CrmConnection выглядят корректно, включая ClientCredentials)
  2. Создание прокси-сервера org: var orgProxy = new OrganizationServiceProxy(conn.ServiceUri, conn.HomeRealmUri, conn.ClientCredentials, conn.DeviceCredentials);
  3. Создать контекст данных: var context = new MyContext(orgProxy);

В этот момент при получении любых данных из context возникает следующее исключение WCF:

Произошло исключение System.ServiceModel.Security.SecurityNegotiationException Сообщение = Вызывающий не был аутентифицирован службой. Источник = mscorlib Трассировки стека: Трассировка стека сервера: в System.ServiceModel.Security.IssuanceTokenProviderBase'1.DoNegotiation (TimeSpan timeout) в System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen (время ожидания TimeSpan) в System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen (время ожидания TimeSpan)

... и т. Д.

InnerException показывает IsSenderFault=True и IsPredefinedFault=True.

Что здесь происходит?

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Я нашел решение.Прежде всего, пожалуйста, загрузите RTW-версию CRM SDK 2011.

Код для подключения будет:

public static IOrganizationService Service() 
{
    ClientCredentials Credentials = new ClientCredentials(); 
    Credentials.Windows.ClientCredential.UserName ="<username>"; 
    Credentials.Windows.ClientCredential.Password ="<password>"; 

    //This URL needs to be updated to match the servername and Organization for the environment.
    Uri OrganizationUri = new Uri("http://<server name>/<organization name>/XRMServices/2011/Organization.svc"); 
    Uri HomeRealmUri = null; 

    //OrganizationServiceProxy serviceProxy; 
    using (OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(OrganizationUri, HomeRealmUri, Credentials, null)) 
    {
        IOrganizationService service = (IOrganizationService)serviceProxy; 
        return service; 
    }
}

и вот, пожалуйста ...

Приветствия!Наслаждайтесь кодированием.

0 голосов
/ 25 мая 2011

Возможно, вы захотите сузить точную ошибку в CRM, используя трассировку CRM.Вы можете активировать трассировку CRM с помощью специального инструмента и найти его для получения более подробной информации об источнике исключения.Обратите внимание, что файлы трассировки становятся очень большими и очень большими, поэтому целесообразно отслеживать только во время вызова веб-службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...