【发布时间】:2019-02-19 20:19:15
【问题描述】:
我在 .NET Core API 上公开发布服务,并从 WPF 应用程序中使用 HttpClient 调用它。我需要通过调用WindowsIdentity,找到解决方案,需要在HttpClientHandler 上设置DefaultCredentials。但是,当我将其设置为 true 时,Web API 服务会被调用两次,一次使用ClaimsIdentity,第二次使用WindowsIdentity。我只需要与WindowsIdentity 打一个电话。
HttpClient client = new HttpClient(new HttpClientHandler
{
Credentials = CredentialCache.DefaultCredentials
});
var response = await client.PostAsync(url, content);
var res = response.Content.ReadAsStringAsync();
【问题讨论】:
-
你怎么称呼它?
-
您确定第一个请求不是选项请求吗?
-
@CamiloTerevinto - 上面的代码是调用代码,我在其余 api 中放置了断点,并且我只在设置 DefaultCredentials 时看到 2 个调用,如果我创建一个干净的 HttpClient 实例, API 只被调用一次。
-
@Sam - 不确定您所说的选项请求是什么意思
-
@Alex 好吧,我不知道 HttpClient 是否会这样做,但是浏览器会这样做,而 HttpClient 可能会:通常在发送 HTTP POST 之前发送 HTTP OPTIONS 请求以获取一些信息,例如 CORS 选项。请参阅 - developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS ... 下次调试时可能会仔细检查 HTTP 动词。