是否可以为 WCF 提供自定义代理地址和自定义凭据?
我在 stackoverflow 上找到了这个答案:How to set proxy with credential to generated WCF client?,但我遇到了一个复杂的问题,我正在验证的服务使用自己的身份验证,所以我必须使用两组凭据(一组用于通过代理,另一组用于针对服务进行身份验证)
我正在使用另一个问题的答案中描述的技术来提供服务凭证。例如
client.ClientCredentials.UserName.UserName = username;
client.ClientCredentials.UserName.Password = password;
我可以使用如下方式设置代理的地址:
(client.Endpoint.Binding as WSHttpBinding).ProxyAddress = ...;
如何设置有效的两组凭据? (注意:代理的凭据和实际服务的凭据不同!)另请注意,代理详细信息不一定是默认的系统代理详细信息。
如果您将 WebRequest.DefaultWebProxy 属性设置为带有凭据的新 WebProxy,WCF 会将其用于其发出的所有 HTTP 请求。 (这将影响应用程序使用的所有 HttpWebRequest,除非显式覆盖)。
// get this information from the user / config file / etc.
Uri proxyAddress;
string userName;
string password;
// set this before any web requests or WCF calls
WebRequest.DefaultWebProxy = new WebProxy(proxyAddress)
{
Credentials = new NetworkCredential(userName, password),
};
我的有关代理服务器的博客文章包含更多详细信息。
您设置的客户端凭据可以很好地验证您的服务。
对于代理身份验证,您需要使用 HttpTransportSecurity.ProxyCredentials。
此链接可能会对您有所帮助。