【发布时间】:2013-09-21 08:15:43
【问题描述】:
我正在使用下面描述的 2 种方式在 WCF 服务中使用第 3 方 https Web 服务。
-
使用服务参考
ServiceClient client=new ServiceClient(); client.ClientCredentials.UserName.UserName ="xxx"; client.ClientCredentials.UserName.Password = "pwd"; ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; ServiceResponse response=client.GetData();
2.使用通道工厂
ChannelFactory<IService> client = new ChannelFactory<IService>(binding, address);
var proxy = client.CreateChannel();
client.Credentials.UserName.UserName ="xxx";
client.Credentials.UserName.Password ="pwd";
ServiceResponse response=client.GetData();
我能够使用第一种方法传递安全凭据,并且我能够从第 3 方 Web 服务获取响应。但是当我使用第二种方法时我无法获得响应。我可以看到用户名、密码是使用第一种方法添加到外发 SOAP 消息的安全标头中的,而第二种方法则没有。如果有人可以在这里提出一些关于通道工厂方法的建议,我会很高兴。
【问题讨论】:
-
这两者之间的绑定可能有区别?
-
这两种方法我都使用 WSHttpBinding。
-
您是否检查了绑定的安全参数?
-
是的,我检查了绑定的参数。