使用CSharp,如果我这样做:
System.Security.Cryptography.X509Certificates.X509Chain ch = new System.Security.Cryptography.X509Certificates.X509Chain();
有什么影响:
ch.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(4000);
根据https://msdn.microsoft.com/en-us/library/system.timespan(v=vs.110).aspx
我将TimeSpan结构的新实例初始化为指定的刻度数,并且刻度等于100纳秒或一千万分之一秒。一毫秒内有10,000个刻度。参考:https://msdn.microsoft.com/en-us/library/system.timespan.ticks(v=vs.110).aspx
这看起来我将超时设置为小于一毫秒来下载证书吊销列表。然而,实际上,使用这样的代码需要花费很多秒才能下载非常大的CRL文件。
那条线究竟做了什么?
TIA。
答案 0 :(得分:1)
这看起来我将超时设置为小于一毫秒来下载证书吊销列表
ChainPara.dwUrlRetrievalTimeout = (uint)Math.Floor(timeout.TotalMilliseconds);
因此,您有效地将其设置为“0”,从而产生操作系统默认值。这只是一个问题,它必须如何舍入值才能将其发送到Windows。
该值映射到CERT_CHAIN_PARA上的dwUrlRetrievalTimeout
,对于它的使用方式(下载之间的差距,消息泵中的超时等等)没有太多可说的内容。但你可以尝试TimeSpan.FromMilliseconds(1)
(或其他一些小数字),看看你看到了什么。 1ms不太可能超过您的TCP和HTTP连接时间,因此它可能具有在Offline
模式下计算链的效果。