재우니의 블로그

WCF 에서 도메인이나 IP 주소로 나오지 않고, 아래와 같이 MACHINE 이름으로 표기되는 이슈가 발생되었습니다. 왜 WCF 서비스인 wsdl 의 링크에 도메인 명이 아닌, machine 이름으로 표기될까?에 대해 여러 forum 에 질문을 해봤습니다. 이 문제는 WCF 서비스를 IIS 상에 호스팅 할때 발생, WSDL 링크는 로컬 machine 이름으로 표기된다는 점입니다. 

 

 

이를 해결하기 위해 확인한 결과, serviceMetadata  의 hehavior 를 변경하는 건데요. 이를 변경하기 위해선 httpGetUrl 또는 httpsGetUrl 을 명시할 metadata 위치가 무엇인지 명시해 줘야 합니다. 그래서 이래처럼 url 에 도메인 주소를 추가하였습니다.

 

<system.serviceModel>
  <services>
    <service name="Demo.Service.MultiEndPointsService" behaviorConfiguration="serviceBehaviour">          
      <endpoint address="basic" binding="basicHttpBinding" bindingConfiguration="basicBinding"  
                        contract="Demo.Service.MultiEndPointsService" />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="serviceBehaviour">
        <serviceMetadata httpGetEnabled="true" 
                          httpGetUrl="http://192.168.3.61/Demo.Service/MultiEndPointsService.svc/basic"  />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <bindings>
    <basicHttpBinding>
      <binding name="basicBinding" maxBufferSize="2147483647" 
                               maxReceivedMessageSize="2147483647">
        <security mode="None"></security>
        <readerQuotas maxStringContentLength="2147483647" />
      </binding>
    </basicHttpBinding>
  </bindings>
</system.serviceModel>

 

 

 

 

httpGetUrl 값에 ip 주소를 명시한것을 보실 수 있습니다.

 

 

image 

 

 

이제 브라우저에서 이를 실행해 볼까요?

 

 

 

image

 

 

위처럼 안되면 iis 상에 도메인 넣는 부분이 있습니다. 그 부분을 지정해 주시면 잘되기도 합니다.

 

http://knowledgebaseworld.blogspot.kr/2010/06/domain-name-replaced-with-machine-name.html

 

Domain name replaced with Machine Name in WCF Service

I personally came across this issue WCF was taking machine name not IP address or domain name and also I got questions from forums about “ ...

knowledgebaseworld.blogspot.com