Как пройти проверку подлинности Windows Live и использовать службы CRM Odata? - PullRequest
0 голосов
/ 08 августа 2011

У меня теперь есть проект, который должен создать веб-портал для Dynamic CRM 2011. Я хочу использовать службу данных CRM, но не могу пройти проверку подлинности Windows Live в коде c #.Я также попытался погуглить некоторый пример.К сожалению, не повезло.Я надеюсь, что кто-то, кто делал это раньше, может сказать мне, как это сделать.Большое спасибо!

Ответы [ 5 ]

2 голосов
/ 11 октября 2011

Исходя из того, что я обнаружил, я не могу пройти проверку подлинности Windows Live по коду.Поэтому мы изменили его на аутентификацию Active Directory.Спасибо вам, ребята.

1 голос
/ 01 сентября 2011

Сервис OData доступен только из кода в CRM Online.Он отлично подходит для javascript внутри CRM (и, если вам это нужно, CRM 2011 OData Query Designer очень полезен), но не доступен для любого кода, внешнего по отношению к серверу CRM.

Рекомендуемый Microsoft способ доступа к веб-службам CRM - через WCF, как показано во многих примерах SDK.

Если .NET вам не подходит, ответ Срини Раджи ссылкикак получить доступ к данным, используя только SOAP.

1 голос
/ 08 августа 2011

Если вы пишете код на C # для взаимодействия с Dynamics 2011, вам лучше воспользоваться сервисом организации. Конечная точка OData больше подходит для кода JavaScript и логики на стороне клиента.

Пакет Dynamics CRM 2011 SDK (https://www.microsoft.com/download/en/details.aspx?id=24004) содержит примеры подключения к службе с использованием идентификатора Windows Live ID. Чтобы начать, посмотрите \ samplecode \ cs \ quickstart после того, как вы загрузили и разархивировали SDK.

0 голосов
/ 09 августа 2011

Ссылка ниже показывает аутентификацию Windows Live, а также получение данных из Dynamics CRM 2011 онлайн.

http://blogs.msdn.com/b/girishr/archive/2011/02/04/connecting-to-crm-online-2011-web-services-using-soap-requests-only.aspx

Надеюсь, что это работает для вас

0 голосов
/ 09 августа 2011

Проверьте настройки IIS / аутентификации ...

disabled - Anonymous Authentication
enabled - ASP.NET Impersonation
enabled - Windows Authentication

Это необходимо для IIS для передачи учетных данных пользователя на ваш веб-портал. Затем вы можете передать эти учетные данные, используя следующий пример кода ...

    public ActionResult HitCRM()
    {
        var uri = System.Configuration.ConfigurationManager.AppSettings["CRMURI"];

        ClientCredentials credentials = new ClientCredentials();
        var dinfo = ServiceConfigurationFactory.CreateConfiguration<IDiscoveryService>(new Uri(uri));
        var dsp = new DiscoveryServiceProxy(dinfo, credentials);

        dsp.Authenticate();

        var retrieveOrganizationsRequest = new RetrieveOrganizationsRequest();
        var retrieveOrganizationsResponse = dsp.Execute(retrieveOrganizationsRequest) as RetrieveOrganizationsResponse;

        if (retrieveOrganizationsResponse.Details.Count == 1)
        {
            var organizationDetail = retrieveOrganizationsResponse.Details[0];

            Uri orgServiceUri = new Uri(organizationDetail.Endpoints[EndpointType.OrganizationService]);

            IServiceConfiguration<IOrganizationService> orgConfigInfo = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(orgServiceUri);

            var creds = new ClientCredentials();
            IOrganizationService organizationService = new OrganizationServiceProxy(orgConfigInfo, creds);

            Guid userid = ((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest())).UserId;
            var systemUser = organizationService.Retrieve("systemuser", userid, new ColumnSet(new string[] { "firstname", "lastname" }));

            // Retrieve the version of Microsoft Dynamics CRM.
            var versionRequest = new RetrieveVersionRequest();
            var versionResponse = (RetrieveVersionResponse)organizationService.Execute(versionRequest);

            ViewBag.FirstName = systemUser.GetAttributeValue<string>("firstname");
            ViewBag.LastName = systemUser.GetAttributeValue<string>("lastname");
            ViewBag.Version = versionResponse.Version;
        }

        return View();
    }
...