Microsoft Graph订阅验证请求超时问题求助
确认URL公网可达性
自定义通知URL必须是公网可直接访问的,不能用内网IP或localhost。用curl或Postman在非本地网络环境下请求你的URL,验证是否能正常响应。如果本地可访问但公网不行,检查防火墙规则、NAT端口映射是否配置正确,确保Graph允许的端口(默认HTTPS 443,自定义端口需符合Graph要求)已开放。检查HTTPS证书合规性
Microsoft Graph要求通知URL必须使用受信任CA颁发的有效HTTPS证书,自签名证书会被拒绝。确认证书域名匹配、未过期,且证书链完整无断裂。简化验证请求处理逻辑
订阅创建时Graph会发送GET验证请求,必须在10秒内返回200 OK,并将请求中的validationToken参数原样返回在响应体中。
.NET示例处理代码:[HttpGet] public IActionResult ValidateSubscription(string validationToken) { return Ok(validationToken); }这段逻辑不能包含耗时操作(如数据库查询、外部API调用),避免触发超时。
排查网络延迟问题
测试服务器到Microsoft Graph服务的网络链路延迟,用traceroute或ping工具确认是否存在跨国链路拥堵。如果服务器在国内,需确保网络链路能稳定连接Graph服务节点。检查代理/负载均衡配置
若使用Nginx、Azure App Service等代理服务,需确认代理未拦截GET验证请求,且超时设置足够(如Nginx的proxy_read_timeout需设为10秒以上),同时保证请求头完整传递。核对订阅参数准确性
创建订阅时的notificationUrl必须是完整的HTTPS地址,无拼写错误、路径错误,不能使用HTTP协议。
内容的提问来源于stack exchange,提问作者user19525661

