在我们的一个客户端连接我们的网络服务时,我为这个问题面临了将近 2 周的痛苦。
您需要使用实现 IWebProxy 的自定义代理模块覆盖 System.Net 配置
第 1 步:创建程序集 (DLL) 第 2 步:向其中添加以下类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Configuration;
namespace MyProjectNameSpace.Utils.WebProxy
{
public class CustomWebProxy : IWebProxy
{
public ICredentials Credentials
{
get
{
string _proxyUserName = ConfigurationManager.AppSettings["ProxyUserName" ] as string ?? "";
string _proxyPassword = ConfigurationManager.AppSettings["ProxyPassword" ] as string ?? "";
string _useProxyDomain = ConfigurationManager.AppSettings["UseProxyDomain"] as string ?? "";
string _proxyDomain = ConfigurationManager.AppSettings["ProxyDomain" ] as string ?? "";
return String.IsNullOrEmpty(_proxyDomain)
? new NetworkCredential(_proxyUserName, _proxyPassword)
: new NetworkCredential(_proxyUserName, _proxyPassword, _proxyDomain);
}
set { }
}
public Uri GetProxy(Uri destination)
{
string _proxyServer = ConfigurationManager.AppSettings["ProxyServer"] as string ?? "";
Uri result = new Uri(_proxyServer);
return result;
}
public bool IsBypassed(Uri host)
{
return false;
}
}
}
第 3 步:编译到发布模式 第 4 步:将 DLL 引用到您的 WCF 客户端项目 第 5 步:打开 WCF 客户端项目的 Web.Config 或 App.Config 文件并添加以下配置。
<appSettings>
<add key="ProxyServer" value="http://192.168.1.254:9099"/>
<add key="ProxyUserName" value="dipak.r"/>
<add key="ProxyPassword" value="password"/>
<add key="UseProxyDomain" value="true"/>
<add key="ProxyDomain" value="DOMAINNAME"/>
</appSettings>
添加以下部分或更改它。
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="false">
<module type="MyProjectNameSpace.Utils.WebProxy.CustomWebProxy, MyProjectNameSpace.Utils.WebProxy"/>
</defaultProxy>
</system.net>