C# 为什么被动扩展在编译时向microsoft发送HTTP GET?

C# 为什么被动扩展在编译时向microsoft发送HTTP GET?,c#,system.reactive,linqpad,C#,System.reactive,Linqpad,我从这个站点下载了反应式扩展v1.0 SP1的稳定版本,并在.Net Framework 3.5环境中使用它(Visual Studio 2008) 我试着在一个项目中使用反应式扩展,发现它启动起来非常慢。在LinqPad,我输入了以下“C#表达式”: 我还引用了System.Reactive.dll并导入了System.Reactive.Linq命名空间。当我运行它时,编译和运行需要12秒 我打开进程监视器并监视LinqPad。我发现它正在向124.155.222.226或124.155.22

我从这个站点下载了反应式扩展v1.0 SP1的稳定版本,并在.Net Framework 3.5环境中使用它(Visual Studio 2008)

我试着在一个项目中使用反应式扩展,发现它启动起来非常慢。在LinqPad,我输入了以下“C#表达式”:

我还引用了System.Reactive.dll并导入了System.Reactive.Linq命名空间。当我运行它时,编译和运行需要12秒

我打开进程监视器并监视LinqPad。我发现它正在向124.155.222.226或124.155.22.59发送HTTP请求。(仅供参考,打开LinqPad时,LinqPad本身也会打电话给157.55.161.150)。使用WireShark,我注意到它正在向发送HTTP GET请求

http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl
有人知道为什么在代码编译时使用Reactive.Extensions会这样打电话回家吗?此外,有没有办法关闭它,因为在开发应用程序(并在生产环境中运行)时打电话回家需要12秒的延迟,这特别不方便


注意:编译代码时(或调试时JIT编译代码时),它会这样打电话回家。实际上并不是运行时行为在执行此操作。

听起来Rx程序集是经过身份验证码签名的。在我看来,对为Framework 3.5或更早版本构建的.NET程序集进行身份验证是一个错误,因为CLR在读取程序集之前会检查证书吊销列表,最多会延迟几秒钟(如果Internet连接超时,则最多延迟30秒)

此错误功能已在CLR 4中修复:Authenticode签名仅在需要时验证,而不是每次加载程序集时验证

(正是由于这个原因,LINQPad可执行文件的Framework 3.5版本没有经过身份验证码签名。)


也许您可以请求RX团队考虑从反应程序集的3.5个构建中移除AudioToCID签名(假设这确实是问题)。< /P> CRL -证书吊销列表。它似乎以某种方式检查了一个证书,并且需要该吊销列表的最新版本才能知道该证书是否仍然有效。但是,为什么它只需要检查一个证书是否有效来编译包含IObservable的代码呢?这似乎是发出HTTP请求的错误时间和地点。关于LINQPad,当您打开它时会拨打157.55.161.150,这是为了检查更新。检查在自己的线程上运行,因此不会减慢任何速度。尽管如此,如果需要,您可以通过使用-noupdate开关启动LINQPad来禁用它。我很抱歉。我认为LinqPad只是在检查更新,并不意味着暗示它正在尝试任何邪恶的事情。事实上,这确实有效。我在这里问过,被指示去
http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl