У меня есть сторонний WSDL-сервис, который мне нужно интегрировать в веб-приложение .NET Core 2.1.
Я добавил службу через «Добавить подключенную службу»> «Поставщик ссылок на веб-службы Microsoft WCF».
У меня есть некоторый служебный класс, который настраивает службу следующим образом:
ServiceClient servicePort = new ServiceClient();
servicePort.ClientCredentials.UserName.UserName = USERNAME;
servicePort.ClientCredentials.UserName.Password = PASSWORD;
setupHttpHeader(servicePort.InnerChannel );
где
public static void setupHttpHeader( IClientChannel serviceChannel )
{
using (new OperationContextScope( serviceChannel ))
{
// Add a HTTP Header to an outgoing request
HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty();
requestMessage.Headers["Authorization"] = "Basic " + System.Convert.ToBase64String(Encoding.UTF8.GetBytes(USERNAME + ":" + PASSWORD));
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage;
}
}
Теперь, когда я пытаюсь вызвать конечную точку в моем контроллере,Я получаю это исключение:
System.ServiceModel.Security.MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'basic realm="appbox object-model"'.
В старом образце .NET Framework 4.0 для подключения сторонней службы существовал app.config
, в котором были некоторые конфигурации для привязок.Они выглядели так:
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic" />
</security>
Что мне нужно добавить в мой проект, чтобы сделать эту работу?