Câu hỏi này có liên quan đến Bug in the dynamic language runtime in combination with IIS 7.5lỗi ChannelFactory với đối số động
ChannelFactory
treo nếu tôi cung cấp nó với một gõ đúng đối tượng năng động.
dynamic src = "MSFT";
var binding = new BasicHttpBinding();
var endpoint = new EndpointAddress("http://www.restfulwebservices.net/wcf/StockQuoteService.svc");
var channel = new ChannelFactory<IStockQuoteService>(binding, endpoint).CreateChannel();
// this will print just fine
Console.WriteLine(channel.GetStockQuote(src as string));
// this will print just fine
Console.WriteLine(new StockQuoteServiceClient().GetStockQuote(src));
// this will never print and the application will hang with no exceptions
Console.WriteLine(channel.GetStockQuote(src));
- dịch vụ Trên đây là công cộng, không phải của tôi, và bạn có thể kiểm tra mã này mình nếu bạn chỉ cần thêm tài liệu tham khảo phục vụ cho các thiết bị đầu cuối cung cấp trong mã;
StockQuoteServiceClient
được tạo bởi mục menu Thêm dịch vụ tham chiếu và chỉ mất đối tượng động;- Điều kỳ diệu này không xảy ra khi tôi khởi chạy ứng dụng với F5 trên Debug, tất cả các dòng in và chương trình thoát ra chính xác;
- Nếu tôi chạy nó và sau đó đính kèm trình gỡ rối trong khi thực hiện, tôi có thể nhìn thấy nó treo trên các cuộc gọi đến
channel.GetStockQuote(src)
; - Nếu tôi rời khỏi chương trình, chương trình sẽ ăn hết bộ nhớ của tôi;
- Nó chỉ bị treo khi tôi sử dụng
ChannelFactory
của riêng mình với các đối tượng động, như được mô tả trong các nhận xét.
Tại sao số điện thoại ChannelFactory
của tôi bị treo khi cần đối tượng động làm thông số khi được tạo bởi tham chiếu thêm dịch vụ chỉ chạy tốt?
Sử dụng tính năng phản chiếu cũng hoạt động. var method = channel.GetType(). GetMethod ("GetStockQuote"); var value = (StockQuote) method.Invoke (kênh, đối tượng mới [] {src}); – lstern