我需要配置一个网站以通过代理访问另一台计算机上的Web服务。我可以将网站配置为使用代理,但找不到指定代理所需凭据的方法,这可能吗?这是我当前的配置:
<defaultProxy useDefaultCredentials="false"> <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" /> </defaultProxy>
我知道您可以通过代码执行此操作,但是该网站正在运行的软件是开源CMS,因此我无法执行此操作。
有什么办法吗?MSDN对我没有太大帮助。
是的,可以在不修改当前代码的情况下指定您自己的凭据。不过,这只需要您编写一小段代码。
使用此类创建一个名为 SomeAssembly.dll 的程序集:
namespace SomeNameSpace { public class MyProxy : IWebProxy { public ICredentials Credentials { get { return new NetworkCredential("user", "password"); } //or get { return new NetworkCredential("user", "password","domain"); } set { } } public Uri GetProxy(Uri destination) { return new Uri("http://my.proxy:8080"); } public bool IsBypassed(Uri host) { return false; } } }
将此添加到您的配置文件:
<defaultProxy enabled="true" useDefaultCredentials="false"> <module type = "SomeNameSpace.MyProxy, SomeAssembly" /> </defaultProxy>
这将“注入”列表中的新代理,并且由于没有默认凭据,因此WebRequest类将首先调用您的代码并请求您自己的凭据。您将需要将组装SomeAssembly放置在CMS应用程序的bin目录中。
这是某种程度上的静态代码,要获取所有字符串(如用户,密码和URL),您可能需要实现自己的ConfigurationSection或在AppSettings中添加一些信息,这要容易得多。