我是Azure Functions和nodejs的新手(我的背景主要是powershell)。我正在尝试设置一个可以处理事件网格事件的函数,我读过的所有内容都说连接两者应该很容易。但是,我似乎无法通过“简单”验证步骤。我使用以下代码创建了该函数:
module.exports = function (context, req) {
context.log('Event Grid Validation.');
context.log(req.body[0])
if(req.body[0].data.validationcode){
context.res = {
// status: 200, /* Defaults to 200 */
body: {"validationResponse": req.body[0].data.validationcode}
};
} else {
context.res = {
body: "Sorry no validation code found"
};
}
context.done();
};
当我直接向函数发送请求时,我得到了预期的结果。例如,使用以下正文发送请求:
[{ “id”:1234, “数据”:{ “validationcode”:“Woo Validate Me Baby” }, “主题”:“请”, “eventType”:“新事件” }]
作为独立请求,效果很好。但事件网格不断踢回同样的失败消息
部署失败并出现以下错误:{“code”:“Url validation”,“message”:“验证提供的端点的尝试失败。有关详细信息,请访问https://aka.ms/esvalidation。”}
我觉得我在某个地方犯了一个新手的错误,但我无法弄清楚在哪里。
任何帮助都会非常感激。谢谢!
答案 0 :(得分:1)
以下是一步一步的演示,如果您是初学者,我建议您按照演示进行演示(即使它不在node.js中,只是为了得到这个想法)。我相信你的问题是比编码问题更多的权限。
https://www.codeproject.com/Articles/1220389/Azure-EventGrid-Azure-Function-demo
答案 1 :(得分:0)
GOT IT!我当时很蠢。
validationCode not validationcode .... case sensitive argh
module.exports = function (context, req) {
context.log('Event Grid Validation.');
context.log(req.body[0])
context.log(req.body[0].data.validationCode)
context.res = {
"validationResponse": req.body[0].data.validationCode
};
context.done();
};
这个有效!谢谢你的帮助!