Erro ChannelFactory com argumentos dinâmicos
Esta questão está relacionada comBug no tempo de execução da linguagem dinâmica em combinação com o IIS 7.5
ChannelFactory
trava se eu fornecê-lo com um objeto dinâmico digitado corretamente.
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));
O serviço acima é público, não é meu, e você mesmo pode testar esse código se adicionar a referência de serviço ao endpoint fornecido no código;StockQuoteServiceClient
foi criado pelo item de menu Add Service Reference e pega objetos dinâmicos muito bem;Isso magicamente não acontece quando eu inicio o aplicativo com F5 no Debug, todas as linhas são impressas e o programa sai corretamente;Se eu rodá-lo e, em seguida, anexar o depurador durante a execução eu posso vê-lo pendurado na chamada parachannel.GetStockQuote(src)
;Se eu deixar, o programa come toda a minha memória;Só trava quando uso meu próprioChannelFactory
com objetos dinâmicos, conforme descrito nos comentários.Porque meuChannelFactory
trava quando recebe objetos dinâmicos como parâmetros quando aquele criado por Add Service Reference funciona bem?