web api 转移到生产环境后获取访问令牌时出现错误请求
web api Bad Request when getting access token after moving to production
我有一个网络 api,它在使用访问令牌/不记名身份验证的测试中运行良好。我使用 HttpClient 进行身份验证和发出请求。简单。
这是基本的 Web 客户端设置。基地址是一个常量,我在生产时会更改它。
public static HttpClient GetClient()
{
HttpClient Client = new HttpClient();
Client.BaseAddress = new Uri(Ics2Constants.ICS2APIBaseAddress);
Client.DefaultRequestHeaders.Accept.Clear();
Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return Client;
}
我像这样构建令牌请求登录信息:
var values = new Dictionary<string, string>();
values.Add("grant_type", "password");
values.Add("username", "niceUser");
values.Add("password", "NiCePaSsWord");
var loginContent = new FormUrlEncodedContent(values);
然后我请求访问令牌:
var loginResponse = await client.PostAsync("/Token", loginContent);
测试模式,完美。我可以获得我的访问令牌,在后续请求中将其传回。一切都很好。
当我开始制作时。我在请求访问令牌时收到错误请求 400。我确实有正确的基地址,因为如果我取消授权属性,我可以取回数据。
生产中的访问令牌请求有些不同,但我不知道要更改什么。
好吧,答案分为两部分:
1) 虚拟主机问题。他们最后腐败了。
2) 在他们解决问题后,我仍然收到 404(未找到)...所以我不得不在我的 PostAsync 中删除“/”。所以新行看起来像这样:
var loginResponse = await client.PostAsync("Token", loginContent);
它在带有“/”的本地端调试工作,但生产端不满意。
我现在起床工作了。 :)
我有一个网络 api,它在使用访问令牌/不记名身份验证的测试中运行良好。我使用 HttpClient 进行身份验证和发出请求。简单。
这是基本的 Web 客户端设置。基地址是一个常量,我在生产时会更改它。
public static HttpClient GetClient()
{
HttpClient Client = new HttpClient();
Client.BaseAddress = new Uri(Ics2Constants.ICS2APIBaseAddress);
Client.DefaultRequestHeaders.Accept.Clear();
Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return Client;
}
我像这样构建令牌请求登录信息:
var values = new Dictionary<string, string>();
values.Add("grant_type", "password");
values.Add("username", "niceUser");
values.Add("password", "NiCePaSsWord");
var loginContent = new FormUrlEncodedContent(values);
然后我请求访问令牌:
var loginResponse = await client.PostAsync("/Token", loginContent);
测试模式,完美。我可以获得我的访问令牌,在后续请求中将其传回。一切都很好。
当我开始制作时。我在请求访问令牌时收到错误请求 400。我确实有正确的基地址,因为如果我取消授权属性,我可以取回数据。
生产中的访问令牌请求有些不同,但我不知道要更改什么。
好吧,答案分为两部分:
1) 虚拟主机问题。他们最后腐败了。
2) 在他们解决问题后,我仍然收到 404(未找到)...所以我不得不在我的 PostAsync 中删除“/”。所以新行看起来像这样:
var loginResponse = await client.PostAsync("Token", loginContent);
它在带有“/”的本地端调试工作,但生产端不满意。
我现在起床工作了。 :)