Аутентификация WebHttpBinding игнорируется - PullRequest
2 голосов
/ 05 апреля 2011

Я пытаюсь использовать базовую HTTP-аутентификацию со службой REST, но отладочный прокси-сервер показывает, что заголовки аутентификации вообще не отправляются, они игнорируются! Вот мой код:

     WebChannelFactory<IMyService> factory = new WebChannelFactory<IMyService>(
        new WebHttpBinding(),
        new Uri("http://10.6.90.45:8081"));
     WebHttpBinding http = (WebHttpBinding) factory.Endpoint.Binding;
     http.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
     http.Security.Mode = WebHttpSecurityMode.TransportCredentialOnly;

     factory.Credentials.UserName.UserName = "username";
     factory.Credentials.UserName.Password = "password";

IMyService proxy = factory.CreateChannel ();

proxy.SomeMethod ();

...

HTTP-запрос не авторизован с помощью схемы аутентификации клиента «Basic». Заголовок аутентификации, полученный от сервера, был ''.

Трассировка стека серверов: в 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)

Исключение переброшено в [0]: в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32) ...

...