Web API从具有凭据的C#控制台应用程序调用

时间:2016-09-14 20:49:09

标签: c# cors asp.net-web-api2 dotnet-httpclient

我正在尝试使用已授权的Get方法编写Web API站点。该站点是使用个人帐户的默认模板站点。因此它将用户名和密码存储在数据库中。我试图通过HttpClient调用此Web API站点并在控​​制台应用程序中传递用户名和密码。我已经尝试了几种方法来解决这个问题。我想*我在我的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;
    }
}

1 个答案:

答案 0 :(得分:0)

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

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

请参阅thread