Why does Reactive Extensions send a HTTP GET to microsoft ON COMPILATION?
c#, linqpad, system.reactive
Solution
It sounds like the Rx assembly is Authenticode-signed. IMO, it's a mistake to Authenticode-sign .NET assemblies built for Framework 3.5 or earlier - because the CLR checks the certification revocation list before reading the assembly, delaying things by a few seconds at best (or 30 seconds at worst if your Internet connection times out).
This misfeature was fixed in CLR 4: Authenticode signatures are verified only on demand, not every time you load the assembly.
(It's for this reason that the Framework 3.5 version of the LINQPad executable is not Authenticode-signed.)
Maybe you could ask the Rx team to consider removing the Authenticode signature from the 3.5 build of the Reactive assemblies (assuming this is indeed the problem).
Problem
I downloaded the Stable release of Reactive Extensions v1.0 SP1 from this site http://msdn.microsoft.com/en-us/data/gg577610, and I am using it in a .Net Framework 3.5 environment (Visual Studio 2008) I tried using Reactive Extensions in a project, and noticed it was very slow to start up. Going to LinqPad, I entered the following "C# Expression": ``` (new int[0]).ToObservable() ``` I also referenced System.Reactive.dll and imported the System.Reactive.Linq namespace. When I run it, it takes 12 Seconds to compile & run. I opened Process Monitor and monitored LinqPad. I found that it is sending an HTTP request to 124.155.222.226 OR 124.155.22.59. (FYI LinqPad itself also phones home to 157.55.161.150 when you open it). With WireShark, I noticed it is sending an HTTP GET request to ``` http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl ``` Does anyone know why it is phoning home like this when code compiles with Reactive.Extensions? Furthermore, is there any way to turn it off, because a 12 second delay to phone home when devoloping the application (AND running in production) is particularlly inconvenient. NOTE: It phones home like this when you COMPILE the code (or the JIT compiles it when debugging). It is not actually the run-time behavior that appears to be doing this.