2014-11-28 5 views
0

WCF 서비스를 사용하는 C# 콘솔 응용 프로그램을 개발했습니다. 모두 로컬 컴퓨터에서 제대로 작동합니다. 설치 파일을 만들고 exe 및 exe.config 파일을 배포 할 때 아래 오류가있는 동일한 네트워크의 다른 컴퓨터에서 응용 프로그램 오류가 발생했습니다.동일한 네트워크에있는 다른 컴퓨터에서 WCF 서비스 오류가 발생했습니다.

통신 개체 인 System.ServiceModel.Channels.ServiceChannel은 오류 상태이므로 통신에 사용됩니다.

WCF 서비스 끝점 URL - http://inblrlwssc251.wdf.corp:7980/AfariaService/Server다른 컴퓨터에도 액세스 할 수 있습니다. 무엇이 잘못 될지 알지 못합니다.

<system.serviceModel> 
    <diagnostics> 
     <messageLogging logEntireMessage="true" logMalformedMessages="true" 
      logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" /> 
    </diagnostics> 
    <bindings> 
     <netNamedPipeBinding> 
     <binding name="NetNamedPipeBinding_IServerService" /> 
     </netNamedPipeBinding> 
     <netTcpBinding> 
     <binding name="NetTcpBinding_IServerService"> 
      <security mode="Message" /> 
     </binding> 
     </netTcpBinding> 
     <wsHttpBinding> 
     <binding name="WSHttpBinding_IServerService" /> 
     </wsHttpBinding> 
    </bindings> 
    <!-- 
     Modify the "adress" in each of the endpoint tags based on where the Afaria API service is hosted 
    --> 
    <client> 
     <endpoint address="http://inblrlwssc251:7980/AfariaService/Server" 
      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IServerService" 
      contract="AfariaServerService.IServerService" name="WSHttpBinding_IServerService"> 
     </endpoint> 
     <endpoint address="net.tcp://inblrlwssc251:7982/AfariaService/Server" 
      binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IServerService" 
      contract="AfariaServerService.IServerService" name="NetTcpBinding_IServerService"> 
     </endpoint> 
     <endpoint address="net.pipe://localhost/AfariaService/Server" 
      binding="netNamedPipeBinding" bindingConfiguration="NetNamedPipeBinding_IServerService" 
      contract="AfariaServerService.IServerService" name="NetNamedPipeBinding_IServerService"> 
     </endpoint> 
    </client> 
    </system.serviceModel> 

어떤 도움 또는 올바른 방향으로 포인터가 매우 이해할 수있을 것이다 :

서비스에 대한 구성은 내가 바인딩 WSHTTP를 사용하여 아래와 같이 보인다.

+0

언급 한 오류는 문제의 원인이 아닙니다. 문제는 그것이 잘못 된 국가에 어떻게 들어가는가하는 것입니다. 원래 예외를 포착하고 로깅하지 않고 말할 수는 없습니다. 나는 당신이 예외를 잡아낼 것이라고 생각하지만 여전히 다른 호출을 위해 클라이언트를 사용하려고 시도한다. (WCF 호출 중에 예외가 발생하면 클라이언트가 오류 상태가됩니다.이 클라이언트를 다시 사용하려고하면 더 이상 사용할 수 없다는 예외가 발생합니다.) – fejesjoco

+0

@fejesjoco가 올바른 경로에 있습니다. 서비스에서 * 처리되지 않은 * 예외는 채널을 오류 상태로 만들고 오류 채널을 사용할 수 없으므로 새 채널을 다시 만들어야합니다. 서비스를 확인하십시오 - 로그가 있는지 살펴보고, 이벤트 뷰어에서 로그 된 내용을 확인하고 WCF 추적을 사용하면 근본 원인을 조사 할 수 있습니다. – Tim

+0

감사합니다 fejesjoco 및 팀, 문제가 해결되었습니다. WCF 서비스에 액세스하는 데 필요한 자격 증명을 전달하지 않았습니다. – user2856028

답변

0

나는 이것이 오래되었다는 것을 알고 있으며 그것이 해결되었다고하지만, 후손을 위해 이것은 일반적으로 잘못된 자격 증명을 전달한 결과가 아님을 알려드립니다. 일반적으로 이것은 버퍼에서 허용하도록 구성한 더 많은 데이터, maxitemsinobject 그래프 초과 또는 너무 오래 걸리는 서버 응답으로부터 처리 된 응답의 결과입니다. 처리되는 예외가 발생합니다. .. 그리고이 예외는 다음 호출의 결과입니다 (fejesjoco와 Tim이 지적했듯이).

이 경우 클라이언트/serviceclient 개체를 다시 초기화하는 것이 가장 좋습니다 (이 api의 경우 initContext도 호출해야 함). 그런 다음 다시 호출을 시도하십시오.