Google Cloud Scheduler调用ASP.NET Core Web API报415错误求助
问题解答
1. 能否查看Google发送的HTTP请求原始日志?
- 可以通过Google Cloud Logging查看:
- 进入Cloud Scheduler的任务详情页,点击「查看日志」;
- 在日志过滤器中添加
resource.type="cloud_scheduler_job"并匹配你的任务ID,就能看到Cloud Scheduler发送请求的完整元数据,包括请求头、请求体、响应状态码等细节。
- 同时可在ASP.NET Core API端开启Debug级别的日志,在
appsettings.json中调整配置:
这样能捕获请求到达API后的所有处理步骤,包括模型绑定失败的具体原因。"Logging": { "LogLevel": { "Microsoft.AspNetCore": "Debug", "Microsoft.AspNetCore.Mvc.ModelBinding": "Debug" } }
2. 遗漏的配置及问题原因
返回415 FAILED_PRECONDITION的核心原因是请求媒体类型与API期望不匹配,导致请求在进入控制器方法前就被拦截,因此你写在方法内部的令牌验证代码根本没执行,自然没有日志记录:
- 你的API控制器方法使用
[FromBody] string value,ASP.NET Core默认期望的请求媒体类型是text/plain,或者格式正确的application/json(即字符串需用双引号包裹,比如"sample-content")。 - Google Cloud Scheduler默认如果未显式设置
Content-Type,发送的请求格式会不符合API要求,直接触发415错误,请求无法进入控制器方法。
解决步骤:
- 编辑Cloud Scheduler任务的HTTP请求配置:
- 方法一:设置
Content-Type为text/plain,请求体填写任意纯文本字符串(无需加引号); - 方法二:设置
Content-Type为application/json,请求体填写带双引号的字符串(比如"scheduler-test");
- 方法一:设置
- 建议将令牌验证逻辑移至ASP.NET Core中间件中,而非控制器方法内部,这样即使请求因模型绑定失败被拦截,也能捕获到请求的认证头信息并记录日志。
内容的提问来源于stack exchange,提问作者sbanik
相关产品推荐
相关产品推荐

