Получение ошибки: «Не удалось загрузить указанный файл» при подключении к Dynamics 365 с использованием функций Azure 2.0 - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь подключиться к Dynamics 365 Online с помощью функций Azure. Я следовал учебному пособию в Интернете, но оно основано на функциях Azure 1.

Я получаю ошибку:

2018-11-03T05:21:00.621 [Information] Executing 'Functions.Test' (Reason='This function was programmatically called via the host APIs.', Id=c6ddb58b-51dc-4679-b985-4bcc7934c246)
2018-11-03T05:21:00.984 [Error] Executed 'Functions.Test' (Failed, Id=c6ddb58b-51dc-4679-b985-4bcc7934c246)
Could not load the specified file.

Мой код выглядит следующим образом:

#r "Newtonsoft.Json"
using System.Net;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using System.ServiceModel;
using Microsoft.Xrm.Tooling.Connector;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
//using Newtonsoft.Json;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
   // log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
   // dynamic data = JsonConvert.DeserializeObject(requestBody);
    //name = name ?? data?.name;

   // log.Info($"C# Timer trigger function executed at: {DateTime.Now}");

                var connectionString = @"AuthType = Office365;
                Url = https://*******.crm4.dynamics.com/;Username=******@*****;Password=****";
                CrmServiceClient conn = new CrmServiceClient(connectionString);
                                IOrganizationService service;
                service = (IOrganizationService)conn.OrganizationWebProxyClient != null ? (IOrganizationService)conn.OrganizationWebProxyClient : (IOrganizationService)conn.OrganizationServiceProxy;

                   Entity lead = new Entity("lead");
                    lead.Attributes["subject"] = "New Lead: " + name ;
                    service.Create(lead);




    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

Мой functions.proj:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.CrmSdk.CoreAssemblies" Version="9.0.2.5"/>
    <PackageReference Include="System.ServiceModel.Security" Version="4.5.3"/>
    <PackageReference Include="Microsoft.CrmSdk.XrmTooling.CoreAssembly" Version="9.0.2.7"/>
  </ItemGroup>

</Project>

Кто-нибудь знает, что я могу делать неправильно?

1 Ответ

0 голосов
/ 07 ноября 2018

При загрузке сборок в качестве целевых пакетов Microsoft.CrmSdk.XrmTooling.CoreAssembly возникают проблемы с .Net Framework, а у вашей функции - .NET Standard.

Обновление

Я сделал это неправильно, добавление этих сборок в контекст вручную не работает.

Без .net core sdk нам, возможно, придется отказаться от CrmSdk и пройти аутентификацию в Azure Active Directory. Обратите внимание, что для этого необходимо иметь учетную запись пользователя Dynamics 365 (в сети) с ролью безопасности системного администратора и роль глобального администратора для подписки Office 365.

  1. Зарегистрируйте приложение Dynamic 365 в Azure Active Directory. Выполните эти шаги .

  2. Затем аутентифицируется с использованием ADAL .

  3. Проверьте этот пакет nuget Xrm.Tools.CRMWebAPI , это помощник API для работы с Common Data Service (CDS) и веб-API Dynamics 365.

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