2016-11-22 10 views
0

Я пытаюсь добавить служебную ссылку на Dynamics 365 CRM, используя следующий API https://[Organization].api.crm8.dynamics.com/api/data/v8.2/, но каждый раз, когда я получаю это окно, которое запрашивает у меня учетные данные .... enter image description hereНевозможно добавить ссылку на сервисную службу Dynamics 365 crm в visual studio 2012

Я попытался с помощью учетных данных, которые я использую для входа в МРС ... но они работают ... выигрыш может кто-нибудь сказать мне, какие учетные данные я должен использовать? ..

ответ

0

Почему именно вы пытаетесь добавить ссылку на веб-службы CRM? Предполагая, что вы хотите получить доступ к CRM с сервером коды на стороне, что вам нужно сделать, это:

  1. Добавить ссылки на SDK сборки ядра CRM (Microsoft.Crm.Sdk.Proxy.dll и Microsoft.Xrm.Sdk.dll). Вы можете получить их из загружаемого SDK или просто добавить пакет NuGet «Microsoft.CrmSdk.CoreAssemblies».
  2. После этого вы сможете написать код «говорить» с CRM. Но то, что вам не хватает, - это фактическое «соединение». Существует несколько способов его получения, но проще всего использовать вспомогательный класс Xrm Tooling, описанный здесь - https://msdn.microsoft.com/en-us/library/mt608573.aspx. Вам нужно будет ссылаться на необходимые сборки или использовать пакет NuGet «Microsoft.CrmSdk.XrmTooling.CoreAssembly».

После выполнения всего этого вы сможете успешно выполнить кодовое сопоставление с Dynamics CRM.

CrmServiceClient crmSvc = new CrmServiceClient(ConfigurationManager.ConnectionStrings["MyCRMServer"].ConnectionString); 

IOrganizationService orgService = crmSvc.OrganizationServiceProxy; 

// Who am I? 
WhoAmIResponse whoAmIResp = orgService.Execute(new WhoAmIRequest()) as WhoAmIResponse; 
Guid myUserId = whoAmIResp.UserId; 

// Get all accounts starting with 'A' 
QueryExpression query = new QueryExpression("account"); 
query.ColumnSet = new ColumnSet("accountid", "name"); 
query.Criteria.AddCondition("name", ConditionOperator.BeginsWith, "a"); 

EntityCollection ecoll = orgService.RetrieveMultiple(query); 

foreach(Entity account in ecoll.Entities) 
{ 
    if(account.Attributes.Contains("name")) 
    { 
     Console.WriteLine((string)account["name"]); 
    } 
} 

// Update some account 
Entity accountToUpdate = new Entity("account"); 
accountToUpdate["accountid"] = new Guid("_some_guid_here"); 
accountToUpdate["name"] = "new name"; 

orgService.Update(accountToUpdate); 

Если вы хотите использовать безопасный подход типа, вам необходимо сгенерировать прокси-класс - как описано здесь: https://msdn.microsoft.com/en-us/library/gg327844.aspx

После этого вы сможете написать такой код:

DataContext data = new DataContext(orgService); 
// DataContext is the name of the service context, as defined in the CrmScv tool 

var myAccountData = (from a in data.AccountSet 
         where a.Address1_Telephone1 == "12312313" 
         select new 
         { 
          a.AccountId, 
          a.Name, 
          a.EMailAddress1, 
          a.PrimaryContactId 
         }).First(); 

Contact contactToUpdate = new Contact() 
{ 
    ContactId = myAccountData.PrimaryContactId.Id, 
    EMailAddress1 = myAccountData.EMailAddress1 
}; 

orgService.Update(contactToUpdate); 

... который намного приятнее и менее подвержен ошибкам.

0

судя по ней вы пытаются аутентифицироваться через приложение вне контекста Dynamics 365. Если вы хотите пройти аутентификацию с помощью Web API, вам придется подключиться к веб-службам Microsoft Dynamics 365, используя OAuth и aut henticate использованием Адал

https://msdn.microsoft.com/en-us/library/gg327838.aspx

Вот пошаговое руководство о том, как это сделать

https://msdn.microsoft.com/en-us/library/mt622431.aspx

Дополнительное примечание:

Если вы используете CRM 2013 SDK может потребоваться обновление до 6.1.2 для Dynamics 365 Поддержка

https://blogs.msdn.microsoft.com/crm/2017/02/01/dynamics-365-sdk-backwards-compatibility/