У меня есть 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;
}
}