네트워크 기계에서 실행되는 클라이언트를위한 WCF 서비스를 어떻게 구성합니까?

StackOverflow https://stackoverflow.com/questions/413856

  •  03-07-2019
  •  | 
  •  

문제

방금 WCF 서비스/클라이언트를 만들었으며 같은 컴퓨터에서 실행할 때 모두 잘 작동합니다. 그러나 다른 기계에서 실행하도록 구성하는 방법을 알 수 없습니다. 방법을 알고 있습니까?

현재 URI가 설정됩니다 http : // localhost : 8000......

그러나 나는 net.tcp : // myserver : 8000… .. 같은 것을 원한다고 생각합니다.

어떤 아이디어라도 좋을 것입니다. 감사.

도움이 되었습니까?

해결책

그것이 들리는 바에 따르면, 당신은 동일한 실행 파일에 서비스와 클라이언트를 모두 가지고 있습니다. 이 작업을 수행 할 수 있지만 별도의 기계에서 원할 때 서비스 (자체 호스팅 또는 IIS) 및 클라이언트 실행 파일을위한 실행 파일/호스트가 있어야합니다. 각각은 해당 구성 섹션에서 주소, 바인딩 및 계약으로 올바르게 구성되어야합니다. 서버에서는 다음과 같은 것이 있습니다.

<configuration>
    <system.serviceModel>
        <services>
            <service name="YourService">
                <endpoint address="http://MyServer:8000/..."
                          binding="BasicHttpBinding"
                          contract="Your.IContract" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

그리고 고객에게 당신은 이것을 가지고 있습니다 :

<configuration>
    <system.serviceModel>
        <client>
            <endpoint address="http://MyServer:8000/..."
                      binding="BasicHttpBinding"
                      contract="Your.IContract"
                      name="ClientEndpoint" />
        </client>
    </system.serviceModel>
</configuration>

가장 중요한 것은 클라이언트와 서버가 지정된 포트 및 프로토콜을 통해 서로 통신 할 수 있는지 확인하는 것입니다 (주로 방화벽이 통신을 차단하지 않도록). 알아야 할 또 다른 것은 바인딩 프로토콜을 변경하면 서비스의 다른 측면에 영향을 줄 수 있습니다 (보안은 큰 것뿐만 아니라 서비스로 할 수 있고 할 수없는 것).

다른 팁

여기에 귀하의 질문에 답변하기에 충분한 정보가 없습니다.

코드를 통해 ServiceHost 및 프록시에서 주소/바인딩/계약 정보를 설정하지 않는다고 가정하면 구성 파일의 섹션을 게시해야합니다.

코드로 수행하는 경우 사용중인 코드를 표시해야합니다.

내가 말할 수있는 바에 따르면, 당신은 전송 바인딩과 일치하지 않을 것 같습니다. 서비스와 클라이언트는 동일한 전송 (HTTP, TCP, Pipes 등)에 있어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top