gpt4 book ai didi

c# - 为什么 Reactive Extensions 在编译时向微软发送 HTTP GET?

转载 作者:可可西里 更新时间:2023-11-01 08:46:48 27 4
gpt4 key购买 nike

我从这个站点下载了 Reactive Extensions v1.0 SP1 的稳定版本 http://msdn.microsoft.com/en-us/data/gg577610 ,我在 .Net Framework 3.5 环境 (Visual Studio 2008) 中使用它

我尝试在一个项目中使用 Reactive Extensions,发现启动速度非常慢。转到 LinqPad,我输入了以下“C# 表达式”:

(new int[0]).ToObservable()

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

我打开 Process Monitor 并监控 LinqPad。我发现它正在向 124.155.222.226 或 124.155.22.59 发送 HTTP 请求。 (仅供引用,当您打开 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 程序集是经过 Authenticode 签名的。 IMO,对为 Framework 3.5 或更早版本构建的 .NET 程序集进行 Authenticode 签名是错误的——因为 CLR 在读取程序集之前检查证书撤销列表,最多延迟几秒钟(如果您的 Internet 连接,最坏情况下延迟 30 秒)超时)。

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

(正是由于这个原因,LINQPad 可执行文件的 Framework 3.5 版本未经过 Authenticode 签名。)

也许您可以要求 Rx 团队考虑从 Reactive 程序集的 3.5 版本中删除 Authenticode 签名(假设这确实是问题所在)。

关于c# - 为什么 Reactive Extensions 在编译时向微软发送 HTTP GET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099048/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com