首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自windows窗体D365应用程序的C# FO连接

来自windows窗体D365应用程序的C# FO连接
EN

Stack Overflow用户
提问于 2022-01-03 05:07:09
回答 1查看 284关注 0票数 1

我需要从C# Windows应用程序连接到一个on D365 FO。

到目前为止,我创建了一个Azure帐户并注册了一个应用程序,因此到目前为止,我已经拥有了“应用程序(客户端) ID”、“目录(租户) ID",并创建了一个客户端秘密。

使用数据管理包REST连接到D365 FO需要做什么?

EN

回答 1

Stack Overflow用户

发布于 2022-01-06 20:15:13

看看授权助理员,它是微软为数据管理api提供的示例控制台应用程序的一部分(参见https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/data-entities/data-management-api中的最后一句)。应用程序的Program.cs显示了如何使用身份验证助手。

AuthorizationHelper.cs

代码语言:javascript
复制
using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AuthorizationHelper
{
    public class AuthorizationHelper
    {
        const string aadTenant = "https://login.windows.net/<your-tenant>";
        public const string aadResource = "https://<yourAOS>.cloudax.dynamics.com";
        const string aadClientAppId = "<client id>";        
        const string aadClientAppSecret = "<client secret>";

        /// <summary>
        /// Retrieves an authentication header from the service.
        /// </summary>
        /// <returns>The authentication header for the Web API call.</returns>
        public static string GetAuthenticationHeader()
        {
            AuthenticationContext authenticationContext = new AuthenticationContext(aadTenant);
            AuthenticationResult authenticationResult;
            
            var creadential = new ClientCredential(aadClientAppId, aadClientAppSecret);
            authenticationResult = authenticationContext.AcquireTokenAsync(aadResource, creadential).Result;
            
            // Create and get JWT token
            return authenticationResult.CreateAuthorizationHeader();
        }
    }
}

Program.cs

代码语言:javascript
复制
using ODataClient.Microsoft.Dynamics.DataEntities;
using System;

namespace DataPackageHandler
{
    using AuthorizationHelper;
    using Microsoft.OData.Client;

    class Program
    {
        static void Main(string[] args)
        {
            string ODataEntityPath = AuthorizationHelper.aadResource + "/data";
            Uri oDataUri = new Uri(ODataEntityPath, UriKind.Absolute);

            var d365Client = new Resources(oDataUri);
            d365Client.SendingRequest2 += new EventHandler<SendingRequest2EventArgs>(delegate (object sender, SendingRequest2EventArgs e)
            {
                var authenticationHeader = AuthorizationHelper.GetAuthenticationHeader();
                e.RequestMessage.SetHeader("Authorization", authenticationHeader);
            });

            PackageImporter.ImportPackage(d365Client, @"..\debug\SampleData\usmf_asset-major-types-01.zip");
            PackageExporter.ExportPackage(d365Client, @"..\debug\SampleData\");

            Console.WriteLine("Press enter to exit...");
            Console.ReadLine();
        }        
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70561885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档