我们有一个托管在 IIS 中的 WCF 服务,客户端 dll 正在尝试访问该服务。该服务在 IIS 中绑定以使用 HTTPS,并设置为忽略客户端证书,这可以正常工作,但需要 SSL 会导致问题。
我真的不明白的是,调用服务的方法之一工作得很好,但调用另一个方法不起作用,我收到以下错误:“HTTP 请求被客户端身份验证方案‘匿名’禁止。系统.Net.WebException:远程服务器返回错误:(403)禁止。”
这可能是什么原因造成的?我对 WCF 还很陌生,所以如果我遗漏了任何内容或需要更多信息,请告诉我。
下面是一些服务配置代码:
this.Description.Behaviors.Add(new FaultConversionErrorHandler());
this.Description.Behaviors.Add(new LoggingErrorHandler());
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
ServiceEndpoint endpoint = this.AddServiceEndpoint(typeof(ILicenseService), binding, String.Empty);
SecurityEndpointBehavior securityEndpointBehavior = new SecurityEndpointBehavior();
endpoint.Behaviors.Add(securityEndpointBehavior);
以下是客户端引用服务的方式:
EndpointAddress a = new EndpointAddress(licenseServiceUrl);
Binding b = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
LicenseServiceClient client = new LicenseServiceClient(b, a);
client.Endpoint.Behaviors.Add(new SecurityEndpointBehavior());