none
iis 에서 사이트 바인딩. 호스트 헤더를 넣어주면 사이트가 접근이 안됩니다. RRS feed

  • 질문

  •  

     

    wcf 서비스를 만들어서 공유기를 사용하는 집의 서버 iis에 연결하였습니다.

     

    경로는 대략 http://60.217.72.xx:3112/wcf/service.svc 이런식으로 외부아이피를 포트포워딩해서 연결해놨구요..

     

    문제는 이걸 웹브라우저에서 실행하면 나오는 정보중에 wsdl 메타 데이터표시를 하는데 거기에 주소가 컴퓨터 이름으로 표시가 됩니다.

     

    http://my-servier-2003:3112/wcf/service.svc?wsdl 이런식으로요.. iis에서 사이트 바인딩을 하여 호스트이름을 넣으면 된다고 하는데 공유기가 연결되어서 그런지 동작을 하지 않습니다.

     

    혹시 iis에서 사이트 바인딩을 하지 않고 저기 wsdl데이터의 주소를 변경시킬 수 있는 방법이 없을까요?

    2011년 4월 28일 목요일 오전 9:40

답변

  • 말씀하신 내용은, '포트포워딩'이라고는 하지만 외부 포트와 내부 포트가 바뀌는 식은 아니고 단지 호스트 네임 부분만 wsdl 에 적절하게 보여주면 된다는 것이군요.

    그런 상황에서는, 해당 svc 에 대해서 ServiceFactory를 재정의하는 것으로 해결할 수 있습니다. 이 부분은 설명이 다소 길어지는데, 다음의 글을 참고하세요.

    http://social.msdn.microsoft.com/forums/en-US/wcf/thread/c7fd51a2-773e-41d4-95a0-244e925597fe/

    위의 글에 대한 답글에 보면 "Timetheos"라는 사람이 '소스 코드'와 함께 자세하게 설명해주고 있습니다. 그대로만 따라하시면 정상적으로 hostname 부분이 [컴퓨터 명]으로 나오는 문제를 해결할 수 있습니다.


    이전에 제가 올려놓았던 예제를, 위의 글에 따라 바꿔서 소스 코드를 올려놓았으니 참고하십시오.

    http://www.sysnet.pe.kr/temp/WebApplication1.zip

    • 답변으로 표시됨 neoissu 2011년 5월 4일 수요일 오전 1:27
    2011년 5월 2일 월요일 오후 1:46

모든 응답

  • 재미있군요. ^^

    한번 테스트 삼아서 저도 만들어 봤습니다.

    원래의 IIS 서비스에서는 7880 포트로 호스팅하고, 공유기에서 외부에서 접근할 수 있는 포트를 12000으로 해서 포트포워딩으로 연결했습니다. 현재 다음의 경로에서 접근 가능합니다.

    http://www.sysnet.pe.kr:12000/Service1.svc?wsdl

    그런데, 제 경우에는 정상적으로 WSDL 에도 http://www.sysnet.pe.kr:12000/... 으로 나오고 있습니다. 뭐가 잘못된 걸까요? ^^

    제가 테스트한 간단한 웹 프로젝트를 다음의 경로에 올려놓았으니, 참고하세요.

    http://www.sysnet.pe.kr/temp/WebApplication1.zip

     

    2011년 4월 28일 목요일 오후 2:13
  • 답변 감사합니다. 다른 사이트에도 수 없이 질문 했는데 여기서만 응답이 오네요 ^^;

    일단 제가 오늘 테스트 해서 알아낸 것은 Asp 버전에 따라 다른 상황이 발생한다는 것 이었습니다.

    2003 iis6, 2008 iis7 에 모두 VisualStudio2010 을 통해서 웹사이트와 WCF 서비스 응용 프로그램을 Framework 4.0, 3.5 버전 두개로 테스트를 해보았습니다.

    결론은 iis와 상관이 없이 4.0로 만들어진 웹사이트/서비스는 WCF .svc를 확인할때

    svcutil.exe http://60.217.72.118:3143/wcf/Service1.svc?wsdl

    이렇게 주소가 접속한 외부 아이피주소로 정확히 나옵니다. 하지만 3.5로 만들어진 것을 확인해보면

    svcutil.exe http://an-cn-svr2003:3144/wcf/Service1.svc?wsdl

    이렇게 주소가 컴퓨터 이름으로 표시가 됩니다.  (둘다 모두 사이트 바인딩은 설정 안한 상태이구요. 호스트이름을 외부 아이피로 넣게되면 모두 invalid hostname으로 접속이 안됩니다.)

     

    2011년 4월 29일 금요일 오전 2:35
  • 말씀하신 내용은, '포트포워딩'이라고는 하지만 외부 포트와 내부 포트가 바뀌는 식은 아니고 단지 호스트 네임 부분만 wsdl 에 적절하게 보여주면 된다는 것이군요.

    그런 상황에서는, 해당 svc 에 대해서 ServiceFactory를 재정의하는 것으로 해결할 수 있습니다. 이 부분은 설명이 다소 길어지는데, 다음의 글을 참고하세요.

    http://social.msdn.microsoft.com/forums/en-US/wcf/thread/c7fd51a2-773e-41d4-95a0-244e925597fe/

    위의 글에 대한 답글에 보면 "Timetheos"라는 사람이 '소스 코드'와 함께 자세하게 설명해주고 있습니다. 그대로만 따라하시면 정상적으로 hostname 부분이 [컴퓨터 명]으로 나오는 문제를 해결할 수 있습니다.


    이전에 제가 올려놓았던 예제를, 위의 글에 따라 바꿔서 소스 코드를 올려놓았으니 참고하십시오.

    http://www.sysnet.pe.kr/temp/WebApplication1.zip

    • 답변으로 표시됨 neoissu 2011년 5월 4일 수요일 오전 1:27
    2011년 5월 2일 월요일 오후 1:46
  • 말씀하신데로 따라 해보니 동작하네요 감사합니다. 복 받으실거에요 ~

    2011년 5월 4일 수요일 오전 1:31