Dynamics 365 基于Webhook 触发调用 Azure Function

创建函数应用

首先登录到Azure的应用服务中心
https://portal.azure.com/

点击函数应用
在这里插入图片描述
写入对应信息,创建应用
在这里插入图片描述

创建好的函数应用,可以理解为是一个提供webapi的云服务站点,可以向该函数应用中添加多个函数。

在这里插入图片描述

函数的触发可以基于多种模式,如下图,可以基于http请求时触发调用,也可以基于其他方式触发,如当队列中插入消息时触发,也可以当作定时器做计划任务来用。
在这里插入图片描述

在VS中创建Azure Function项目

首先打开VS,创建Azure Function项目
在这里插入图片描述
为项目添加Azure Functions
在这里插入图片描述
选择 http trigger
在这里插入图片描述
下图为我添加的测试代码

在这里插入图片描述

 public static class AccountTest
    {
    
    
        [FunctionName("AccountTest")]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req,
            ILogger log)
        {
    
    
            log.LogInformation("Start AccountTest.");
            string content = await req.Content.ReadAsStringAsync();
            log.LogInformation("jsonContent:"+ content);

            RemoteExecutionContext context = GetContext(content);
            Entity updatedAccount = (Entity)context.InputParameters["Target"];
            log.LogInformation(updatedAccount.LogicalName + ": " + updatedAccount.Id);
            log.LogInformation("End AccountTest.");
            return req.CreateResponse(HttpStatusCode.OK);
        }
        public static RemoteExecutionContext GetContext(string contextJSON)
        {
    
    
            RemoteExecutionContext rv = null;
            using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(contextJSON)))
            {
    
    
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(RemoteExecutionContext));
                rv = (RemoteExecutionContext)ser.ReadObject(ms);
            }
            return rv;
        }
    }

将写好的Azure Function注册到函数应用

回到Azure应用门户,打开函数应用,点击如下图所示 “获取发布配置文件”
在这里插入图片描述

下载好发布配置文件后,回到VS中,点击发布,并选择导入配置文件,下一步

在这里插入图片描述

选择下载好的 "获取发布配置文件"点击完成。

在这里插入图片描述

配置完的发布如下,直接点击发布即可。

在这里插入图片描述

发布完成,回到管理中心,找到"函数",可以看到刚发布好的function(发布成功可能会有几秒或几分钟的延迟才能在管理中心中看到)

在这里插入图片描述

通过插件注册工具注册写好的函数

打开刚刚注册好的函数,点击"获取函数url"

在这里插入图片描述

复制url,url中包含的内容有两部分,如下图,红色和黄色框所示

在这里插入图片描述

打开插件注册工具,链接dynamics 365 环境,点击"Register" 选择 “Register New Web Hook”
在这里插入图片描述

将上面url中的两部分分别填入到如下图所示位置,点击保存。
在这里插入图片描述

这时候,我们可以像插件一样添加相应的步骤,如下图

在这里插入图片描述

在系统中简单测试

随便创建一条客户记录

在这里插入图片描述

然后回到Azure函数应用中心,监控到刚刚创建记录所触发的函数
在这里插入图片描述

点击进去,可以看到具体代码里添加的log

在这里插入图片描述

如用VS启动调试Azure Function,报"无法启动Azure储存仿真器。请以管理员身份运行"错误,可将10000端口对应的进程杀掉

1、查看端口 netstat -ano|findstr [端口]
例子 :netstat -ano|findstr 10000

2、击杀进程 taskkill /pid [PID] /f
例子:taskkill /pid 19672 /f

如需VS调试调用http trigger,运行后,出现如下图所示,添加断点后,直接通过网页或postman进行对应调用本地调试即可进入断点。

在这里插入图片描述

GET

在这里插入图片描述

POST

在这里插入图片描述
C#后端接收

在这里插入图片描述

调试发布到Azure上的函数,获取调用函数如下图

在这里插入图片描述

postman调用如下

GET

在这里插入图片描述

POST

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tantu666/article/details/131810448