繁体   English   中英

WCF basicHttpBinding和HTTP代理

[英]WCF basicHttpBinding and HTTP proxy

我正在尝试让生成的WCF ServiceClient通过具有用户名/密码身份验证的HTTP (不是HTTP S )代理将其请求发送到WCF服务,但是我无法使其工作。 我的WCF服务使用basicHttpBinding,因此我尝试按以下方式配置ServiceClient实例:

var svc = new ServiceClient();
var b = svc.Endpoint.Binding as BasicHttpBinding;

b.ProxyAddress = new Uri(proxyAddress);
b.UseDefaultWebProxy = false;
b.Security.Mode = BasicHttpSecurityMode.Transport;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
b.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic;

svc.ClientCredentials.UserName.UserName = proxyUsername;
svc.ClientCredentials.UserName.Password = proxyPassword;

但是,这导致System.ArgumentException说:

提供的URI方案http无效。 预期的https

当我将b.Security.Mode设置为BasicHttpSecurityMode.None ,WCF似乎完全忽略了HTTP代理设置!

我尝试的第二个解决方案是设置WebRequest的DefaultWebProxy属性并将UseDefaultWebProxy属性设置为true,例如:

var webProxy = new WebProxy(proxyAddress, true);
webProxy.Credentials = new NetworkCredential(proxyUsername, proxyPassword);
WebRequest.DefaultWebProxy = webProxy;

var svc = new ServiceClient();

var b = svc.Endpoint.Binding as BasicHttpBinding;
b.UseDefaultWebProxy = true;

但是,这也不起作用,并且ServiceClient不会通过HTTP代理发送其请求。

我在这里没有主意,所以请让我知道我做错了,谢谢!

将安全模式设置为BasicHttpSecurityMode.TransportCredentialOnly。 这允许通过HTTP传递纯文本身份验证详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM