Я звоню в веб-службу через WCF (w / .NET 4.0), для которой требуется базовая HTTP-аутентификация (с именем пользователя и паролем) через HTTPS. Хотя я думаю, что все настроено правильно, я получаю сообщение об ошибке 401 всякий раз, когда я звоню в службу. Я отслеживал HTTP-трафик и заметил, что WCF, похоже, игнорирует то, что я сказал ему использовать заголовок авторизации с именем пользователя и паролем, поскольку в запросе ни один из них не отправляется. Вот моя конфигурация ниже. Есть идеи? Спасибо!
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicAuthSecured">
<security mode="Transport">
<transport clientCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://REMOVED FOR CONFIDENTIALITY"
binding="basicHttpBinding" bindingConfiguration="BasicAuthSecured"
contract="Five9.WsAdmin" name="WsAdminPort" />
</client>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
А вот и мой код:
var five_9_client = new WsAdminClient();
five_9_client.ClientCredentials.UserName.UserName = “REMOVED FOR CONFIDENTIALITY";
five_9_client.ClientCredentials.UserName.Password = "REMOVED FOR CONFIDENTIALITY";
var call_log_response = five_9_client.getCallLogReport(call_log); //Bombing out here
Я получаю это исключение:
{"HTTP-запрос не авторизован с помощью схемы аутентификации клиента« Basic ». Заголовок аутентификации, полученный от сервера, был« »."}
С внутренним исключением:
{"Удаленный сервер возвратил ошибку: (401) не авторизован."}
С трассировкой стека:
в System.ServiceModel.Channels.HttpChannelUtilities.ValidateAuthentication (запрос HttpWebRequest, ответ HttpWebResponse, WebException responseException, фабрика HttpChannelFactory)
в System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse (запрос HttpWebRequest, ответ HttpWebResponse, фабрика HttpChannelFactory, WebException responseException, ChannelBinding channelBinding)
в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply (TimeSpan timeout)
в System.ServiceModel.Channels.RequestChannel.Request (сообщение-сообщение, время ожидания TimeSpan)
в System.ServiceModel.Dispatcher.RequestChannelBinder.Request (сообщение-сообщение, время ожидания TimeSpan)
в System.ServiceModel.Channels.ServiceChannel.Call (строковое действие, логический односторонний режим, операция ProxyOperationRuntime, Object [] ins, Object [] outs, TimeSpan timeout)
в System.ServiceModel.Channels.ServiceChannel.Call (строковое действие, логический односторонний режим, операция ProxyOperationRuntime, Object [] ins, Object [] outs)
в System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (метод IMethodCallMessageCall, операция ProxyOperationRuntime)
в System.ServiceModel.Channels.ServiceChannelProxy.Invoke (сообщение IMessage)