这个问题与一个较老的问题有关:
Is it possible to specify proxy credentials in your web.config?
我创建了一个自定义Web代理类,并在上面问题的答案中显示的部分中使用它。我在自定义Web代理类中有一个构造函数,它接受代理URL,用户名,密码和域值。但是,我无法弄清楚如何让.NET调用此参数化构造函数,因为我没有显式创建Web代理对象。我在web.config文件中添加了以下配置设置
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="false">
<module type="ISO.Prometrix.CommunityMitigation.Common.Impl.ProxyModule,
ISO.Prometrix.CommunityMitigation.Common"/>
</defaultProxy>
</system.net>
我正在使用spring.net进行DI。我在我的spring配置文件中添加了自定义类的对象定义,但是当我运行项目时,似乎总是调用默认构造函数。为了使这项工作,我正在从我的自定义Web代理中的配置应用程序设置中读取代理URI,用户名,密码和域。
我想从外部将这些值注入我的自定义类。这是我的代码:
public class ProxyModule : IWebProxy
{
private readonly string _username;
private readonly string _password;
private readonly string _domain;
private readonly string _proxyAddress;
public ProxyModule()
{
// Unable to figure out how to invoke the parameterized constructor on this
// class that's why doing this workaround.
_username = ConfigurationManager.AppSettings["ProxyUsername"];
_password = ConfigurationManager.AppSettings["ProxyPassword"];
_domain = ConfigurationManager.AppSettings["ProxyDomain"];
_proxyAddress = ConfigurationManager.AppSettings["ProxyAddress"];
}
public ProxyModule(
string username,
string password,
string domain,
string proxyAddress)
{
_username = username;
_password = password;
_domain = domain;
_proxyAddress = proxyAddress;
}
public ICredentials Credentials
{
get
{
return new NetworkCredential(_username, _password, _domain);
}
set {}
}
public Uri GetProxy(Uri destination)
{
return new Uri(_proxyAddress);
}
public bool IsBypassed(Uri host)
{
return false;
}
}
答案 0 :(得分:0)
.NET不允许您控制将使用哪个实例。 web.config中设置的参数是类型,因此您无法控制它将如何实例化。
我建议你创建一个配置对象并通过Spring实例化它。然后从ProxyModule构造函数内部检索直接调用Spring的对象并相应地配置代理。