2010-01-26 2 views
3

현재 Windows Azure의 웹 역할에 WCF REST 서비스를 구현 중입니다. 예를 들어 일부 데이터가 업데이트 될 때 서로를 계속 업데이트 할 수 있도록 역할 인스턴스간에 통신을 추가하려고합니다. BLOB 저장소에 저장합니다. 내가하고 싶은 것은 웹 역할의 외부 및 내부 HTTP 끝점 모두에서 동일한 WCF 서비스를 호스팅하는 것입니다. 그러나 WCF는 IIS에서 호스팅 될 때 프로토콜 당 하나의 기본 주소로 제한됩니다.웹 역할의 외부 엔드 포인트와 내부 엔드 포인트에서 Azure로 WCF 서비스를 호스팅하려면 어떻게해야합니까?

이 컬렉션은 이미 스키마 http을 가진 주소를 포함 : 내 역할에 대한 내부 HTTP 엔드 포인트를 활성화하고 WebServiceHostFactory를 사용하여 내 서비스를 시작하려고하면이 오류가 내가 얻을 수있다. 이 컬렉션에 에있는 구성표 당 최대 하나의 주소로 을 사용할 수 있습니다.

매개 변수 이름 : 항목은 다양한 장소에서

내가 조금 주위에 구글에서 한

the one workaround I've seen은 Web.config의에서 baseAddressPrefixFilter를 추가하는 것이 좋습니다. 그러나 앱을 실행하기 전에 두 엔드 포인트의 전체 URL을 모를 경우 어떻게 작동하는지 잘 모르겠습니다.

또는이 문제는 IIS 호스팅에 제약이있는 것 같아서 Azure에서 사용할 수있는 다른 호스팅 방법이 있습니까? 나는 어떤 IIS 컨텍스트 또는 무엇이든 강력하지 않거나 충분히 안전하지는 않지만 셀프 호스팅을 생각할 것이다. 그러나 나는 확실히 모른다.

누구든지이 문제를 해결하는 방법을 알고 있습니까? 웹 역할의 두 끝점 모두에서 웹 서비스를 호스팅하려는 것은 꽤 일반적인 일처럼 보입니다. 나는 상대적으로 WCF에 익숙하지 않아, 내가 놓치고있는 것이 명백 할 수도있다. 어떤 도움을 주셔서 감사합니다.

답변

0

나는 마침내 이것을 금요일에 알아 냈습니다. 나중에 더 자세한 답변 및/또는 블로그를 제공하려고합니다. 그러나 지금까지 나와 함께 한 해결책의 요약은 다음과 같습니다.

  • system.serviceModel 섹션이 다음에 있습니다. web.config 파일. web.config를 통해 구성 할 수있는 부분이있을 수 있지만, 코드 내에서이 모든 작업을 수행하는 것이 쉽습니다.
  • 각 끝점은 자체 서비스를 수행해야합니다. 두 종단점이 동일한 프로토콜 (이 경우 HTTP)을 사용하고 있으며 IIS에서 호스트하려고하면이 문제를 해결하기위한 쉬운 방법은 없습니다.
  • 각 서비스에는 자체 .svc 파일이 있어야합니다. 아마도 .svc 파일은 IIS에서 호스팅하는 데 필요하지 않다고 들었지만 사실이라면 다른 어떤 방법으로도 작동하지 못했습니다.
  • 각 서비스에는 고유 한 사용자 지정 서비스 호스트 팩토리도 있습니다. 공장에서 호스트를 만들 때 사용하려는 엔드 포인트와 일치하는 기본 주소 매개 변수를 사용했습니다. 나는이 기본 주소가 실제로는 중요하지 않다고 말했지만, 나 자신을 보증 할 수는 없다. 그런 다음 엔드 포인트를 작성할 때 엔드 포인트 주소에 빈 문자열을 사용하십시오.
  • REST 서비스를 만들고 싶었 기 때문에 보통 WebServiceHost를 사용했지만 여러 가지 문제가 발생하여 ServiceHost를 대신 사용하여 WebHttpBinding 및 WebHttpBehavior를 수동으로 종점에 추가했습니다.외부 하나에서 내부 서비스를 호출 할 때
  • 마지막으로, 정말 같은 새로운 작업 상황에 맞는 범위로 전화를 둘러싸고 있는지 확인했다 :

using (new OperationContextScope((IContextChannel)myClientFromChannelFactory)) 
{ 
    myClientFromChannelFactory.MyServiceMethod(); 
} 
 

가 나는 similar question on the MSDN Windows Azure forums을 물어 몇 가지를 가지고 거기에 정보가 있으므로 거기에 도움이 될만한 정보가있을 수 있습니다.

다른 사람이 같은 문제를 겪는 데 도움이되는 호프.

관련 문제