创建函数应用
首先登录到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