Как эффективно обрабатывать сервис WCF с обработкой ошибок - PullRequest
0 голосов
/ 28 декабря 2011

Я получаю эту ошибку после того, как выкину ошибку в службе WCF:

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.

Ошибка генерируется службой с использованием
throw new FaultException<DatabaseFault>(new DatabaseFault(e.Message));

Как я могу справиться с этим, чтобы не нужно было перезапускать и клиент, и сервис каждый раз?

Я использую WCF 4.0, C #.

Редактировать 1:Я использую привязку net.tcp для службы WCF.

Редактировать 2: Я хочу эффективный способ работы с WCF.Это не связано с тем, что говорит Джон С.

Правка 3: Мой код работает.Но я думаю, что он работает не так, как должен (как он был спроектирован).

Это консольное приложение, в котором размещается мой сервис:

using (ServiceHost host = new ServiceHost(typeof(AuctionService)))
        {
            Console.WriteLine("AuctionWCF.TestHost Started");
            host.AddServiceEndpoint(
                typeof(IAuctionService),
                new NetTcpBinding(),
                "net.tcp://localhost:9000/AuctionWcfEndPoint");
            host.Open();
            Console.WriteLine("AuctionWCF.TestHost listens for requests");

            Console.ReadLine();
        }

Это клиент:

AuctionService = new ChannelFactory<IAuctionService>(
            new NetTcpBinding(),
            new EndpointAddress("net.tcp://localhost:9000/AuctionWcfEndPoint")).CreateChannel();

Я что-то не так делаю?

Ответы [ 2 ]

1 голос
/ 28 декабря 2011

Вы используете ChannelFactory?Если это так, этот ответ показывает пример ChannelFactoryManager, который мне очень помог.

0 голосов
/ 29 декабря 2011

Это довольно хороший подход, и это то, что я хотел открыть:

http://blog.tallan.com/2009/05/06/recover-from-a-wcf-service-fault-part-2-generic-serviceclientfactory-class/

Я также взял некоторые хорошие моменты из ответа diggingforfire.

Найден другой хороший ответ, который можно использовать в качестве передового опыта здесь

...