0

Azure와 내 사설망에서 호스팅되는 서비스 패브릭 클러스터간에 Azure 서비스 버스 릴레이를 설정하려고합니다.서비스 버스 릴레이 바인딩을위한 Azure 서비스 패브릭 리스너 설정

서비스 패브릭 WCF 서비스에서 작동하도록 서비스 버스 릴레이의 구성을 가져올 수 없습니다.

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners() 
{ 
    return new[] 
    { 
     // Standard WCF Listener 
     new ServiceInstanceListener(context => 
      new WcfCommunicationListener<IFooService>(
       wcfServiceObject: this, 
       serviceContext: context, 
       endpointResourceName: "WcfServiceEndpoint", 
       listenerBinding: WcfUtility.CreateTcpListenerBinding() 
      ) 
     ), 
     // Service Bus Relay Listener 
     new ServiceInstanceListener(context => 
     { 
      var wcfRelay = new WcfCommunicationListener<IFooService>(
       wcfServiceObject: this, 
       serviceContext: context); 
      wcfRelay.ServiceHost.AddServiceEndpoint(
        typeof(IFooService), 
        new NetTcpRelayBinding(), 
        ServiceBusEnvironment.CreateServiceUri(
         "sb", 
         "{mynamespace}.servicebus.windows.net", 
         "{myservce}")) 
       .Behaviors.Add(new TransportClientEndpointBehavior 
       { 
        TokenProvider = 
         TokenProvider.CreateSharedAccessSignatureTokenProvider(
          "RootManageSharedAccessKey", 
          "{mykey}") 
       }); 

      return wcfRelay; 
     }) 
    }; 
} 
+0

당신은 작동하지 않습니다에 대한 자세한 정보를 제공 할 수 있습니까? 특별한 오류가 있습니까? 동일한 환경에서 자체 호스팅 된 WCF 서비스와 동일한 구성이 작동합니까? – masnider

+0

자체 호스팅 된 WFC가 제대로 작동하지 않습니다. 그것은 단지 ... 예외가 없으며, 로그가 없습니다. 자동으로 서비스 시작을 방해합니다. –

답변

0
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners() 
{ 
    return new[] 
    { 
     new ServiceInstanceListener(context => 
     { 
      var listener = new WcfCommunicationListener<IFooService>(
       serviceContext: context, 
       wcfServiceObject: new FooService(), 
       listenerBinding: new WebHttpRelayBinding(EndToEndWebHttpSecurityMode.None,RelayClientAuthenticationType.None), 
       address: new EndpointAddress(ServiceBusEnvironment.CreateServiceUri("https","[ServiceBusNamespace]","[RelayEndPoint]")) 
       ); 

      var ep = listener.ServiceHost.Description.Endpoints.Last(); 

      ep.EndpointBehaviors.Add(
       new TransportClientEndpointBehavior() 
       { 
        TokenProvider = TokenProvider.CreateSharedSecretTokenProvider("owner","[issuerSecret]") 
       }); 
      ep.EndpointBehaviors.Add(
       new ServiceRegistrySettings(discoveryType:DiscoveryType.Public)); 
      ep.EndpointBehaviors.Add(new WebHttpBehavior()); 

      return listener; 
     }) 
    }; 
} 
+0

솔루션에 대해 자세히 설명해 주시겠습니까? 설명 텍스트를 추가 하시겠습니까? –