Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 应用到应用的身份验证,Windows身份验证需要10秒_C#_Asp.net_Windows_Authentication_.net Core - Fatal编程技术网

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秒钟才能进行身份验证

任何帮助都将不胜感激