2010-07-28 3 views
-1
try 
{ 
    String endPointAddr = "net.tcp://localhost:8000/MyService"; 
    NetTcpBinding tcpBinding = new NetTcpBinding(); 
    tcpBinding.TransactionFlow = false; 
    tcpBinding.Security.Transport.ProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign; 
    tcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows; 
    tcpBinding.Security.Mode = SecurityMode.None; 

    EndpointAddress endpointAddress = new EndpointAddress(endPointAddr); 

    Console.WriteLine("::::: WCF Service Demo :::::"); 
    Console.WriteLine("Attempt to connect to: " + endPointAddr); 


    ChannelFactory<IServices> WCF = new ChannelFactory<IServices>(tcpBinding, endpointAddress); 
    IServices proxy = WCF.CreateChannel(); 

    using (WCF as IDisposable) 
    { 
     Console.WriteLine("Connected to: " + endPointAddr); 
     Dictionary<long, DATALINK> dicDataLink = proxy.getDataLink(); 
     lblCTRGData.Text = dicTRGDataLink.Count.ToString(); 
    } 
} 
catch (Exception ex) 
{ 
    lblCTRGData.Text = ex.Message.ToString(); 
} 
Console.ReadLine(); 

этот код запуска свободно, если словарь имеет 50 до 100 записей, но записи больше, чем ошибка была произошел. Объект связи, System.ServiceModel.Channels.ServiceChannel, не может использоваться для связи, поскольку он находится в состоянии Faulted.Коммуникационный объект System.ServiceModel.Channels.ServiceChannel, не может быть использована для связи, поскольку он находится в состоянии FAULTED

+0

А на ваш вопрос? Вы случайно кодируете вызов службы с прокси-сервером в операторе using, и служба забросила ошибку? – Paddy

ответ

2

Без просмотра трассировки стека или кода, который не работает, но похоже, что ваш клиент wcf не удался по какой-то причине, которая перевела его в неисправное состояние, и вы пытаетесь использовать его снова. Или что вы используете инструкцию using с вашим прокси.

Avoiding Problems with the Using Statement

+0

В этом сообщении в блоге упоминается ссылка, которую вы предоставляете, но также дает альтернативное решение, помещая оболочку вокруг прокси-класса клиента WCF и предоставляя метод Dispose, который реализует код из статьи MSDN. Позволяет продолжать использовать инструкцию using и централизовать исправление, если вам нужно позвонить своему клиенту WCF в нескольких местах. http://blogs.msdn.com/b/jjameson/archive/2010/03/18/avoiding-problems-with-the-using-statement-and-wcf-service-proxies.aspx –

Смежные вопросы

 Смежные вопросы