使用DefaultRequestHeaders发送请求两次?

时间:2018-09-27 21:57:49

标签: c# .net-core asp.net-core-webapi

我有一个WebAPI,它可以按以下方式发送BASIC授权信息。

var client = new HttlpClient();
client.BaseAddress = new Uri(GlobalConstants.LdapUri);
var contentType = new MediaTypeWithQualityHeaderValue("application/json");

client.DefaultRequestHeaders.Accept.Add(contentType);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", userName, password))));
Task<HttpResponseMessage> results = client.GetAsync(GlobalConstants.FortressAPIUriDev);
var response = await results;

我已经使用MVC Core 1.x构建了该API,而接收API是使用MVC5构建的。

问题在于此GetAsync同时发送两个请求,我不知道如何解决此问题。我自己做了一些谷歌搜索,看看是否可以找到解决办法,但是到目前为止还没有运气。有没有人遇到这个问题并知道如何解决?

非常感谢您。

1 个答案:

答案 0 :(得分:0)

长话短说,找到了以下解决方案:

using (var client = new HttpClient())
{
    var requestMessage = new HttpRequestMessage(HttpMethod.Get, GlobalConstants.LdapUri + GlobalConstants.FortressAPIUriDev);
    requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", userName, password))));
    var response = await client.SendAsync(requestMessage);
}

替换此代码后,它一次发送一个请求。 在以下位置找到了提示: Adding headers when using httpClient.GetAsync