Как отправить базовые учетные данные аутентификации для предварительной службы https wcf через Azure relay C #? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть WebAapp на Azure, который отправляет запрос на ретранслятор Azure.Он должен быть передан слушателю в локальную службу HTTPS WCF, размещенную на IIS, которая требует базовой аутентификации.Как отправить базовый заголовок авторизации для службы WCF onprem через ретранслятор Azure.Как мне отправить?Например,

«Авторизация»: «Базовая 239837987XYC»

Я использовал фабрику каналов,

        var  ChannelFactory<Overview.MyChannel> cf;
        var relayNamespace ="myrelaynamespace";
        var relayListener = "myrelaylistener";
        var endPointAddress = new EndpointAddress(ServiceBusEnvironment.CreateServiceUri("https", relayNamespace, relayListener));
        cf = new ChannelFactory<Overview.ItServiceManagementAOChannel>(binding, endPointAddress);
        ClientCredentials loginCredentials = new ClientCredentials();
        loginCredentials.UserName.UserName = "onpremWCFusername";
        loginCredentials.UserName.Password = "onpremWCFpassword";

        cf.Endpoint.Behaviors.Add(new TransportClientEndpointBehavior
        {
            TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(ConfigurationManager.AppSettings.Get("WcfRelayKeyName"), ConfigurationManager.AppSettings.Get("WcfRelayKey"))
        });
        cf.Endpoint.Behaviors.Add(loginCredentials); 

Я получаю сообщение об ошибке: Невозможно добавить значение вcollection, поскольку коллекция уже содержит элемент того же типа: 'System.ServiceModel.Description.ClientCredentials'.Эта коллекция поддерживает только один экземпляр каждого типа.Имя параметра: элемент

   using (var ch = cf.CreateChannel())
        {
           try
            {
               var resp = ch.CreateTaskAsync(req).Result;
            }
         }

1 Ответ

0 голосов
/ 27 ноября 2018

Попробуйте указать учетные данные Windows в качестве учетных данных клиента.

factory.Credentials.Windows.ClientCredential.UserName = "administrator";
factory.Credentials.Windows.ClientCredential.Password = "123456";
IService sv = factory.CreateChannel();

Не стесняйтесь, дайте мне знать, если проблема все еще существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...