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");
只要你公开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"。