2012-08-23 28 views
11

Tôi đã tải xuống bản phát hành Ổn định của Tiện ích mở rộng phản ứng v1.0 SP1 từ trang web này http://msdn.microsoft.com/en-us/data/gg577610 và tôi đang sử dụng nó trong môi trường .Net Framework 3.5 (Visual Studio 2008)Tại sao Tiện ích phản ứng gửi HTTP GET tới microsoft ON COMPILATION?

Tôi đã thử sử dụng Tiện ích mở rộng phản hồi trong dự án và nhận thấy nó rất chậm để bắt đầu. Đi LinqPad, tôi bước vào sau "C# Expression":

(new int[0]).ToObservable() 

Tôi cũng tham chiếu System.Reactive.dll và nhập khẩu các namespace System.Reactive.Linq. Khi tôi chạy nó, phải mất 12 Giây để biên dịch & chạy.

Tôi đã mở Process Monitor và giám sát LinqPad. Tôi thấy rằng nó đang gửi yêu cầu HTTP đến 124.155.222.226 HOẶC 124.155.22.59. (FYI LinqPad chính nó cũng điện thoại nhà 157.55.161.150 khi bạn mở nó). Với WireShark, tôi nhận thấy rằng nó đang gửi yêu cầu HTTP GET tới

http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl 

Có ai biết tại sao nó gọi điện về nhà như thế này khi mã biên dịch với Reactive.Extensions? Hơn nữa, có cách nào để tắt nó đi, bởi vì một sự chậm trễ 12 giây để điện thoại nhà khi devoloping ứng dụng (và chạy trong sản xuất) là đặc biệt bất tiện.

LƯU Ý: Điện thoại ở nhà như thế này khi bạn TẠO mã (hoặc JIT biên dịch mã khi gỡ lỗi). Nó không thực sự là hành vi thời gian chạy dường như đang làm điều này.

+4

CRL - Danh sách thu hồi chứng chỉ. Có vẻ như nó bằng cách nào đó kiểm tra chứng chỉ và cần phiên bản mới nhất của danh sách thu hồi đó để biết liệu chứng chỉ có còn hiệu lực hay không. –

+0

Nhưng tại sao cần kiểm tra xem chứng chỉ có hợp lệ đơn giản để biên dịch mã có chứa IObservable không? Điều đó có vẻ như sai thời gian và địa điểm để thực hiện các yêu cầu HTTP. –

+0

Ai đó jab @ericlippert – Will

Trả lời

7

Có vẻ như hội đồng Rx được xác thực bằng Authenticode. IMO, đó là một sai lầm đối với các hội đồng Authenticode-sign .NET được xây dựng cho Framework 3.5 hoặc sớm hơn - vì CLR kiểm tra danh sách thu hồi chứng nhận trước khi đọc lắp ráp, trì hoãn mọi thứ sau một vài giây (hoặc ít nhất 30 giây nếu kết nối Internet của bạn) lần ra).

Lỗi này được sửa trong CLR 4: Chữ ký xác thực chỉ được xác minh theo yêu cầu, không phải mỗi lần bạn lắp ráp.

(Đó là vì lý do này mà các phiên bản Framework 3.5 của LINQPad thực thi không phải là Authenticode ký.)

Có lẽ bạn có thể yêu cầu đội Rx để xem xét loại bỏ các chữ ký Authenticode từ 3.5 build của các hội đồng phản ứng (giả định đây thực sự là vấn đề).

+0

DID này hoạt động như cũ. Tôi đã hỏi tại đây http://social.msdn.microsoft.com/Forums/en-US/rx/thread/00c9718b-5962-42ad-b02d-f170dc91ed36 và được chuyển hướng đến http://blogs.technet.com/b /markrussinovich/archive/2009/05/26/3244913.aspx –

Các vấn đề liên quan