我有一个调用外部 Web 服务的 ASP.NET 4.5 Web 应用程序。该环境需要通过经过身份验证的代理服务器访问 Internet。
在我的开发 PC (Win7) 上,以下配置工作正常。
<system.net>
<defaultProxy useDefaultCredentials="true" enabled="true">
<proxy usesystemdefault="True" autoDetect="True" />
</defaultProxy>
</system.net>
上述配置在应用于测试服务器时不起作用。测试服务器是带有 IIS 7 的 Windows Server 2008。我已将 App Pool 身份设置为我的用户凭据,以便使用我的凭据对代理服务器进行身份验证。
如果我创建IWebProxy
.
public class ManualProxy : IWebProxy
{
private readonly Uri _proxy;
private static readonly NameValueCollection AppSettings = ConfigurationManager.AppSettings;
public ManualProxy()
{
_proxy = new Uri(AppSettings["ManualProxy.Proxy"]);
}
#region IWebProxy
ICredentials IWebProxy.Credentials
{
get
{
return new NetworkCredential(AppSettings["ManualProxy.Username"], AppSettings["ManualProxy.Password"]);
}
set
{
throw new NotImplementedException();
}
}
Uri IWebProxy.GetProxy(Uri destination)
{
return _proxy;
}
bool IWebProxy.IsBypassed(Uri host)
{
return false;
}
#endregion
}
配置。
<defaultProxy useDefaultCredentials="false" enabled="true">
<module type="MyNamespace.ManualProxy, MyAssembly"/>
</defaultProxy>
自定义代理配置为使用我的凭据进行身份验证,这些凭据与我的开发 PC 和 IIS 应用程序池身份的凭据相同。
理想情况下,我不需要自定义代理。如何仅使用 web.config 中的现有选项正确配置代理服务器?
有什么我做的不对吗?