web api在移动到生产环境后获得访问令牌时出现错误请求

本文关键字:访问令牌 请求 错误 api 移动 生产环境 web | 更新日期: 2023-09-27 17:53:49

我有一个web 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。我确实有正确的基址因为如果我去掉授权属性,我可以取回数据

在生产环境中,访问令牌的请求有些不同,但是我不知道要改变什么。

web api在移动到生产环境后获得访问令牌时出现错误请求

最后的答案是两部分:

1)网络主机问题。他们那边有腐败。

2)在他们解决了他们的问题后,我仍然收到404(未找到)…所以我不得不拿出"/"在我的PostAsync。所以新行看起来像这样:

var loginResponse = await client.PostAsync("Token", loginContent);  

它可以在本地端调试时使用"/",但生产端并不满意。

我现在起来工作了。:)