【问题标题】:Using DefaultRequestHeaders sends requests twice?使用 DefaultRequestHeaders 发送请求两次?
【发布时间】:2018-09-27 21:57:49
【问题描述】:

我有一个发送基本授权信息的 WebAPI,如下所示。

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 同时发送了两个请求,我不知道如何解决这个问题。我自己做了一些谷歌搜索,看看我是否能找到解决这个问题的方法,但到目前为止还没有运气。有没有人遇到过这个问题并知道如何解决?

非常感谢您。

【问题讨论】:

  • 错误在其他地方。需要更多信息。
  • @PoulBak 感谢您的评论,但我应该提供哪些其他信息?
  • 会不会是同时来自客户端的两个请求?
  • 是的,我发现一些帖子讨论了类似的问题。像这样的东西:stackoverflow.com/questions/6338942/…
  • 那么这是一个不同的问题。我建议你发布一些 JavaScript。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多