2008-12-26 2 views
4

어떤 사람이 메서드를 호출하면 실제로 발생합니다. IRequestChannel? 예를 들어, 다음 코드가있는 경우 :WCF RequestChannel; 정말로 무슨 일이 일어 났습니까?

ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(); 
// using a netTcpBinding to a net.tcp://localhost:9999/Bar 
IRequestChannel outchannel = factory.CreateChannel(); 
outchannel.Open(); // what happens here? 
if (outchannel.State == CommunicationState.Opened) 
{ 
    success = true; 
} 
outchannel.Close(); 

일부 서비스에서는 정확하지 않은 오류가있는 것 같습니다. 이것이 어떤 방식 으로든 채널이 열려 있는지 확인하지 않으면 항상 잘못된 반응을 보일 것이라고 생각합니다.

개선에 대한 제안 사항이 있으십니까? 메시지를 보내는 것을 피하고 싶습니다. 진단 테스트를 위해 서비스의 실행 가능성을 테스트하는 것일 뿐이므로 필요한 경우 수행 할 수 있습니다. 스트리밍 동작 구성이 열려 보여주는 IRequestChannel에 이르게 무엇 궁금

<binding name="secureNetTcpStream" maxBufferSize="2000000" maxReceivedMessageSize="2000000000" transferMode="Streamed" sendTimeout="00:05:00" receiveTimeout="14:00:00"> 
    <readerQuotas maxStringContentLength="2000000000" maxArrayLength="2000000000" /> 
    <security mode="TransportWithMessageCredential"> 
     <message clientCredentialType="UserName" /> 
    </security> 
</binding> 

:


내가 잘못된 반응을 반환 채널은 다음 behaviorConfiguration을 사용하는 우리의 구성 파일에서 발견 호스트와 서비스를 사용할 수없는 경우에도?

답변

3

열기 기능을 호출하면 실제로 서버 측에 연결되어 통신 채널이 열립니다.

그러나 열기가 성공하지만 서비스 메소드 중 하나를 호출하면 실패 할 수 있습니다.

예를 들어, 클라이언트가 세션을 시작하는 서비스 메소드를 호출하고 서버가 최대 세션 수에 도달하면 함수는 서버 사용 중 예외로 실패합니다. 그러므로 열린 채널이있는 경우에도 세션 생성에 실패 할 수 있습니다.

채널이 성공적으로 열렸지 만 서비스에 여러 가지 장애가있을 수 있습니다.

요약 : 확인은 좋지만 클라이언트 - 서버 통신을 방해하는 다른 "장애물"이있을 수 있습니다. 이것들은 아마도 잘못된 반응 일 것입니다 ...

관련 문제