WCF REST消费错误

本文关键字:错误 REST WCF | 更新日期: 2023-09-27 18:06:36

在尝试使用webservice时,我一直得到以下错误:

HTTP请求未经授权,客户端身份验证方案为"基本"。从服务器接收到的身份验证头是'基本域'。

web服务是使用WCF编写的REST。认证是基于https的基本认证。

任何帮助修复错误将不胜感激。

下面是我试过的代码:

    WebHttpBinding webBinding = new WebHttpBinding();
    webBinding.Security.Mode = WebHttpSecurityMode.Transport;
    webBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
    ChannelFactory<ServiceReferences.BTService.FLDT_WholesaleService> factory = new ChannelFactory<ServiceReferences.BTService.FLDT_WholesaleService>(webBinding,
                                                                        new EndpointAddress(
                                                                            "https://wholesale.fluidata.co.uk/FLDT_BT_wholesale/Service.svc"));
    factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
    factory.Credentials.UserName.UserName = "username";
    factory.Credentials.UserName.Password = "password";
    ServiceReferences.BTService.FLDT_WholesaleService proxy = factory.CreateChannel();
    proxy.AvailabilityCheck("123");

WCF REST消费错误

只要你公开RESTful服务,你可以尝试使用Fiddler - http://www.fiddler2.com/fiddler2/和/或正常的HttpRequest/HttpResponse。你试过类似的东西吗?

Franek的答案是有用的——你将在WCF中使用Fiddler,句号。我可以加一点……这里发生的事情是,您已经指定"Basic"作为您的身份验证方案作为客户端。服务器说"我只允许‘基本领域’"作为身份验证方案。什么是"领域"?基本上是一个凭证名称空间:

用于HTTP基本认证的域

这是另一个有用的链接:WinHTTP中的身份验证

我找不到带有Realm的属性或方法重载…我可能会尝试手动构建Authenticate-WWW头。

就像这样:

request.Headers.Add("WWW-Authenticate", string.Format("basic realm='"{0}'", realm));

"realm"将是服务器期望的任何值,例如,"www.targetsite.com"。