Postman调用Auth0用户端点正常,.NET Core Web API调用报400错误求助
排查思路
- 先校验序列化后的JSON内容
你当前用[FromBody] Object content接收请求后直接序列化,可先在代码中打印json变量的实际值,和Postman的请求体逐字段对比,确认是否存在属性名大小写不符、字段缺失、多了嵌套层级等问题。System.Text.Json默认序列化规则和你上游传入的对象结构不匹配时,极易生成不符合Auth0接口要求的请求体。 - 移除RestSharp冗余配置避免冲突
你同时设置了request.AddParameter("application/json", json, ParameterType.RequestBody)和request.RequestFormat = DataFormat.Json,二者会产生冲突:RestSharp的RequestFormat = DataFormat.Json会触发自动序列化逻辑,覆盖你手动添加的请求体,或导致请求体格式错误,直接删除request.RequestFormat = DataFormat.Json这行即可。 - 核对Auth0端点地址拼写
检查配置项Auth0:Domain的取值是否正确,完整的请求URL是否和Postman调用的Auth0接口地址完全一致,有没有多写/少写斜杠、域名拼写错误等问题,路径不匹配是400错误的常见诱因。 - 验证Bearer令牌有效性
确认代码中使用的令牌和Postman所用令牌完全一致,检查令牌是否过期、是否授予了create:users权限、令牌的Audience是否设置为Auth0 Management API的地址(格式为https://{你的Auth0域名}/api/v2/),权限或Audience配置错误也会返回400错误。 - 抓包对比请求差异
用Fiddler、Charles等抓包工具,分别抓取代码发起的请求和Postman发起的请求,对比URL、请求头、请求体的所有内容,找到二者的差异点即可定位问题。 - 替换请求体设置方式
可以删掉手动序列化JSON、手动添加请求体的代码,直接使用RestSharp自带的AddJsonBody方法:
RestSharp会自动完成序列化、添加正确的Content-Type头,避免手动处理产生的格式错误。// 删掉这两行 // string json = System.Text.Json.JsonSerializer.Serialize(content); // request.AddParameter("application/json", json, ParameterType.RequestBody); // 新增这行 request.AddJsonBody(content);
内容的提问来源于stack exchange,提问作者JessX
相关产品推荐
相关产品推荐

