无法向Azure Event Grid添加WebHook订阅,遇URL验证错误求协助
我帮你梳理下这个URL验证失败的问题,这是Event Grid订阅WebHook时很常见的卡点,咱们一步步来排查解决:
先确认WebHook端点的基础可达性
首先得保证你的Web应用https://webapplication120180427035159.azurewebsites.net是正常对外服务的。你可以直接在浏览器里访问这个URL,或者用curl命令测试对应的API路径,看看能不能返回200的正常状态码。如果端点本身就不可达,那肯定过不了验证。正确处理Event Grid的验证请求
Event Grid在创建订阅时,会主动给你的WebHook端点发一个验证请求,这是必须的校验步骤。你的API端点得正确响应这个请求才能通过验证:- 验证请求是
POST方法,请求体里会包含validationCode字段 - 你的后端需要提取这个
validationCode,然后返回一个JSON格式的响应,示例如下:{ "validationResponse": "这里填收到的validationCode值" } - 要是你的Web应用有身份验证(比如Azure AD、API密钥),记得要给Event Grid的验证请求开绿灯,要么暂时绕过验证,要么配置允许Event Grid的请求通过。
- 验证请求是
检查URL中的特殊字符
你的URL里带了+号,虽然URL编码规则里+代表空格,但有些后端服务可能对这个字符的解析有问题。你可以试试把+替换成URL编码后的%2B,再重新创建订阅,看看能不能解决。查看Web应用的日志定位细节
登录Azure门户找到你的Web应用,去看看应用服务日志或者诊断日志,里面会记录验证请求到达时的具体情况——比如是不是返回了404(端点不存在)、500(内部错误),这些日志能帮你快速定位到底是端点本身的问题,还是后端逻辑的问题。排查防火墙或网络限制
如果你的Web应用配置了防火墙(比如Azure App Service的IP限制),要确认有没有把Event Grid的IP范围加入允许列表,别让防火墙把验证请求给拦下来了。
附你遇到的错误信息:
{ "status": "Failed", "error": { "code": "ResourceDeploymentFailure", "message": "资源操作已完成,最终预配状态为'Failed'。", "details": [ { "code": "Url validation", "message": "尝试验证提供的端点https://webapplication120180427035159.azurewebsites.net/api/values?id=AMif5RXS+Bs0bgsbHnNP8R...时失败" } ] } }
内容的提问来源于stack exchange,提问作者Girish Acharya

