Этот вопрос связан с Bug in the dynamic language runtime in combination with IIS 7.5ChannelFactory ошибка с динамическими аргументами
ChannelFactory
висит, если я предоставить ему правильно набран динамический объект.
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));
- Служба выше общественности, это не мое, и вы можете проверить этот код самостоятельно, если вы просто добавить ссылку на службу к конечной точке, представленной в коде;
StockQuoteServiceClient
был создан с помощью пункта меню «Добавить служебную ссылку» и отлично выполняет динамические объекты;- Это волшебство не происходит, когда я запускаю приложение с F5 на Debug, все строки печатаются, и программа выходит правильно;
- Если я запустил его, а затем приложил отладчик во время выполнения, я вижу, что он висел на вызове
channel.GetStockQuote(src)
; - Если я оставлю это, программа съест всю мою память;
- Это только зависает, когда я использую свой собственный
ChannelFactory
с динамическими объектами, как описано в комментариях.
Почему мой ChannelFactory
зависает, когда он принимает динамические объекты в качестве параметров, когда созданный с помощью Add Service Reference работает нормально?
Использование отражение также работает. var метод = channel.GetType(). GetMethod ("GetStockQuote"); var value = (StockQuote) method.Invoke (канал, новый объект [] {src}); – lstern