C# 应用到应用的身份验证,Windows身份验证需要10秒
我们使用C# 应用到应用的身份验证,Windows身份验证需要10秒,c#,asp.net,windows,authentication,.net-core,C#,Asp.net,Windows,Authentication,.net Core,我们使用System.net.http.HttpClient在asp.net应用程序(特别是.net核心应用程序和标准.net framework 4.5.1应用程序)之间使用Windows身份验证进行http调用,如下所示: var client = new HttpClient(new HttpClientHandler { Credentials = CredentialCache.DefaultCredentials }); var response= await _winHttpCli
System.net.http.HttpClient
在asp.net应用程序(特别是.net核心应用程序和标准.net framework 4.5.1应用程序)之间使用Windows身份验证进行http调用,如下所示:
var client = new HttpClient(new HttpClientHandler { Credentials = CredentialCache.DefaultCredentials });
var response= await _winHttpClient.GetAsync(url);
...
除了第一个请求需要10秒之外,这一切都很好。然后,请求快速进行约40秒,然后一个请求需要10秒。这种循环将永远持续下去
查看接收端的IIS日志,我们可以确定每个请求都被拒绝(401),然后一个后续请求通过,这两个请求之间的延迟通常约为10秒。这对客户端代码来说都是不可见的——它是由底层框架计算出来的
例如:
2017-03-17 14:19:40 10.241.108.23 GET /person/search/john - 80 - 10.211.37.246 - 401 2 5 31
2017-03-17 14:19:40 10.241.108.23 GET /person/search/john - 80 utv\frank 10.211.37.246 - 200 0 0 93
2017-03-17 14:19:41 10.241.108.23 GET /person/search/johnn - 80 - 10.211.37.246 - 401 2 5 46
2017-03-17 14:19:51 10.241.108.23 GET /person/search/johnn - 80 utv\frank 10.211.37.246 - 200 0 0 281
似乎凭据以某种方式被缓存,并且必须每40秒刷新一次
值得注意的是,当两个应用程序都在本地运行时,这个问题不会发生,只有当它们在实际的托管环境中运行时才会发生
发生什么事了?
消费者是否需要为每个请求打两次电话?为什么有些请求需要10秒钟才能进行身份验证
任何帮助都将不胜感激