2013-06-02 2 views
0

간단한 WCF 서비스를 만들고 해당 끝점을 다음과 같이 구성했습니다.WCF 서비스를 구성하는 동안 baseAddress의 역할 EndPoint

<services> 
    <service name="AsynchWCFService.MathOperation"> 
    <endpoint address="MathsOperation" binding="wsHttpBinding" contract="AsynchWCFService.IMathOperation"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses>    
     <add baseAddress="http://localhost:8080/OperationService/" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 

독립 실행 형 exe에서이 WCF 서비스를 호스팅했습니다. 내 서비스가 아래 주소에서 액세스 가능할 것으로 기대됩니다.

http://localhost:8080/OperationService/MathsOperation/ 

그러나 서비스는 내가 http://localhost:8080/OperationService/MathsOperation/ 링크를 사용하여 서비스에 액세스 할 http://localhost:8080/OperationService/

에 액세스 할 수 있습니다. 아무도 나를 도울 수 있습니까?

+0

절대 경로 지정을 시도 했습니까? rae1

+0

@ rae1n 감사합니다. 나는 이것을 시도하고 제대로 작동합니다. 그러나 상대 주소 지정이 작동하는 방식을 이해하기 위해 나는 단지 열중하고 있습니다. – user2243747

답변

2

귀하의 서비스가 http://localhost:8080/OperationService에 가능하지 않다고 생각됩니다. WCF에 의해 작성된 HTML 페이지로 사용 가능한 mex 끝점 또는 WSDL 경로를 설명합니다. 이러한 mex 끝점은 A = address =>http://localhost:8080/OperationService/MathsOperation/ 인 WCF 서비스의 ABC를 설명합니다. 잠재 고객은 mex 끝점을 쿼리하여 서비스 URL을 알 수 있습니다.

기본적으로이 HTML 페이지는 기본 주소에 표시됩니다. 그러나이 페이지를 사용하지 않거나동작을 사용하여 다른 URL에 나타나도록 설정할 수 있습니다.

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior> 
       <serviceDebug httpHelpPageUrl="http://localhost:8080/OperationService/myhelppage" 
           /> <!-- use httpHelpPageEnabled="false" to disable the page --> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

불행하게도, 당신이 당신의 서비스 엔드 포인트와 동일한 주소로 httpHelpPageUrl을 설정할 수 있다고 생각하지 않습니다.

+0

네가 맞습니다. 클라이언트의 .config 파일을 확인했는데 그 주소는 'http : // localhost : 8080/OperationService/MathsOperation'입니다. – user2243747