2011-12-28 1 views
0

은 내가 WCF 서비스에서 오류가 발생 한 후이 오류가 계속 오류 처리와 효율적으로 WCF 서비스를 처리하기 :어떻게

오류는
throw new FaultException<DatabaseFault>(new DatabaseFault(e.Message));

방법을 사용하여 서비스에 의해 발생합니다

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

매번 클라이언트와 서비스를 다시 시작할 필요가없는 방식으로이 문제를 처리 할 수 ​​있습니까?

저는 WCF 4.0, C#을 사용하고 있습니다.

편집 1 : WCF 서비스에 net.tcp 바인딩을 사용합니다.

편집 2 : WCF로 작업하는 효율적인 방법이 필요합니다. 존 S가 말한 것과는 관련이 없습니다.

편집 3 : 내 코드가 작동합니다. 그러나 나는 그것이 (설계된 방식대로) 실행되어야하는 것처럼 동작하지 않는다고 생각합니다.

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

내가 뭔가 잘못하고 있는가 :

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(); 
     } 

이 클라이언트는 다음과 같습니다

이 내 서비스를 호스팅하는 콘솔 응용 프로그램입니다?

+0

가능한 중복으로 사용할 수 anothe 좋은 답변을 찾을 573872/wcf-client-using-block-issue를위한 최선의 해결책) –

+0

어떻게 그렇게 효율적이지 않습니까? 또한 방금 정확한 문제를 파악했습니다. 왜 그렇지 않다고 생각하니? –

+0

WCF에 전화 할 때마다 채널을 열고 싶지 않습니다. 나는 매번 같은 채널을 사용하고 또 다른 하나의 광석을 시작하는데 실패한다면. 방금 WCF 작업을 시작했고이 문제와 관련된 전략을 원합니다. –

답변

1

ChannelFactory를 사용합니까? 그렇다면, this answer은 나를 위해 꽤 잘 작동 한 ChannelFactoryManager의 예를 보여줍니다.

+0

예 채널 공장을 이용합니다. –