2012-12-19 2 views
3

원격 컴퓨터에서 WCF 서비스에 액세스하는 동안 SecurityNegotiationException을 해결하기 위해 이전에 question을 요청했습니다. 그 예외는 ValtasarIII의 대답 덕분에 해결되었습니다.원격 WCF 서비스에 연결할 수 없음 - TimeoutException

이제 다른 문제가 있습니다. 서버에서 내 서비스를 호스팅하고 클라이언트 응용 프로그램을 사용하여 연결하려고합니다. 내가 클라이언트 응용 프로그램에서 서비스에 가입하려고 할 때, 아무 일도 발생하지 않고 말에 나는 예외 얻을 :

The open operation did not complete within the allotted timeout of 00:00:59.9939996. The time allotted to this operation may have been a portion of a longer timeout. 

비록

(I가 필요한 경우 스택 추적을 공유 할 수 있습니다) 전 서비스가 실행 중인지 여부를 테스트 해보고 클라이언트 컴퓨터에서 브라우저를 통해 성공적으로 액세스 할 수 있습니다. 여기

내 구성은 다음과 같습니다

서비스 - Web.config의

<configuration> 
    <system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
     <binding name="wsHttpDual"> 
      <security mode="None"> 
      <message clientCredentialType="None" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </wsDualHttpBinding> 
    </bindings> 
    <protocolMapping> 
     <add scheme="http" binding="wsDualHttpBinding" bindingConfiguration="wsHttpDual"/> 
    </protocolMapping> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="True"/> 
      <serviceDebug includeExceptionDetailInFaults="False" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

클라이언트 -의 app.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
     <binding name="WSDualHttpBinding_ISampleContract" clientBaseAddress="http://95.138.188.232:8000/myClient/"> 
      <!--<security mode="Message"> 
      <message clientCredentialType="Windows" algorithmSuite="Default" /> 
      </security>--> 
      <security mode="None"> 
      <message clientCredentialType="None" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </wsDualHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://95.138.188.232/autofxtools/service.svc" 
      binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_ISampleContract" 
      contract="ISampleContract" name="WSDualHttpBinding_ISampleContract"> 
     <identity> 
      <servicePrincipalName value="host/95.138.188.232" /> 
     </identity> 
     </endpoint> 

    </client> 
    </system.serviceModel> 
</configuration> 

나는 해결책을 수색했지만 아무것도 없습니다 나를 위해 일했다. 서비스 구성은 보안 요구 사항을 제시하지 않는 것으로 보입니다. 그러나 동일한 구성을 가진 클라이언트는 실제로 서비스와 동일한 시스템에서 작동하지만 원격 시스템에서는 작동하지 않습니다. 이것은 Windows 인증이 여전히 존재한다는 것을 의미합니까 (wsDualHttpBinding의 기본값에 따라)? 그렇다면 어디서 잘못 될까요?

몇 가지 긍정적 인 피드백을 얻기를 바랍니다.

감사합니다.

답변

2

방화벽 문제 일 수 있습니다. ISS에서 서비스를 호스팅한다고 가정합니다. 각 포트가 열려 있는지 확인하십시오. 브라우저를 통해 서비스에 액세스하려고하면 어떻게됩니까?

Anscheinend 트리트 다스 문제 NUR의 BEI의 WsDualBinding 안녕히, wenn 데르 포트 80 belegt 인도 표준시 :

또한, 나는 다음과 같은 독일의 포럼에 읽어 보시기 바랍니다. ClientBaseAdress에서 보유한 포트를 사용하는 포트입니다. 해당 없음 netTcpBinding.

는 영어로 어떤 의미 : 포트 80이 이미 점유하는 동안 WsDualBinding를 사용하는 경우

은 분명히이 문제가 발생합니다. ClientBaseAddress를 사용하여 포트를 변경할 수있는 방법이없는 것 같습니다. 유일한 방법은 netTcpBinding을 사용하는 것입니다.

+0

예 IIS를 통해 호스팅하고 있습니다. 그리고 내가 언급했듯이 클라이언트 컴퓨터의 브라우저를 통해 액세스 할 수 있습니다. –

+0

클라이언트 구성의 서비스 URL이 맞습니까? 'http : // 95.138.188.232/autofxtools/service.svc' –

+0

또한 클라이언트 구성에서'clientBaseAddress = "http://95.138.188.232:8000/myClient/"'를 제공하고 있습니다. 또한 정확합니다. ? –

관련 문제