从带有凭证的c#控制台应用程序调用Web API

本文关键字:应用程序 调用 Web API 控制台 凭证 | 更新日期: 2023-09-27 18:06:58

我正在尝试编写一个Web API站点,该站点具有授权的Get方法。该网站是一个默认的模板网站,使用个人帐户。因此它将用户名和密码存储在数据库中。我正在尝试调用这个Web API站点,并通过HttpClient在控制台应用程序中传递用户名和密码。我已经尝试了几种方法来解决这个问题。我想*我在我的API网站上启用了CORS。我总是得到未经授权的结果。这是我正在运行的HttpClient代码,我觉得它是完全有效的,我认为需要配置一些东西来处理这个用户名和密码在API方面,但我完全不确定如何去做,如果是这样的话。

using (var client = new HttpClient())
{
    var byteArray = Encoding.ASCII.GetBytes("sampleUser:Test123!");
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
    client.BaseAddress = new Uri("http://localhost:15198/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    try
    {
        HttpResponseMessage response = await client.GetAsync("api/Query");
        if (response.IsSuccessStatusCode)
        {
            thing = response.Content.ToString();
        }
    }
    catch (HttpRequestException e)
    {
        var test = e.Message;
    }
}

从带有凭证的c#控制台应用程序调用Web API

您需要模拟并传递凭据,假设您在服务器上运行Windows身份验证。

  using (new Impersonator(UserName, Domain, Pwd))
         {
            ...http request
         }

看到线程