我有一段旧代码(单个.aspx文件),需要通过代理才能获得。该代码曾经有效,但是现在该公司已经加强了安全性。
令人反感的代码行是:
dataSet.ReadXml(url);
URL为https。
它在.NET 2.0版上运行-无法升级。 我无法更改web.config文件。
我需要添加到.aspx文件中什么才能使其正常工作? 我得到的错误是:
The remote server returned an error: (407) Proxy Authentication Required.
脚本中没有“连接到网络”代码。
编辑
根据Dan的评论,我已经尝试过:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
IWebProxy proxy = request.Proxy;
WebProxy myProxy = new WebProxy();
Uri newUri = new Uri("http://10.79.30.190:8080");
// Associate the newUri object to 'myProxy' object so that new myProxy settings can be set.
myProxy.Address = newUri;
// Create a NetworkCredential object and associate it with the
// Proxy property of request object.
myProxy.Credentials = new NetworkCredential("username", "password");
request.Proxy = myProxy;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
System.Data.DataSet dataSet = new System.Data.DataSet();
dataSet.ReadXml(responseString);
但仍然出现相同的错误
编辑
另一种尝试:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
IWebProxy proxy = request.Proxy;
WebProxy myProxy = new WebProxy();
Uri newUri = new Uri("http://10.79.30.190:8080");
// Associate the newUri object to 'myProxy' object so that new myProxy settings can be set.
myProxy.Address = newUri;
// Create a NetworkCredential object and associate it with the
// Proxy property of request object.
myProxy.Credentials = new NetworkCredential("username", "password");
request.Proxy = myProxy;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
System.Data.DataSet dataSet = new System.Data.DataSet();
dataSet.ReadXml(new StreamReader(response.GetResponseStream()));
但仍然出现相同的错误
答案 0 :(得分:1)
这意味着您用于代理服务器的凭据不正确,尝试解决此问题的最佳解决方案是:
首先,将此行添加到您的 Web.Config
:
<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>
第二,通过代码:
service.Proxy = WebRequest.DefaultWebProxy;
service.Credentials = System.Net.CredentialCache.DefaultCredentials; ;
service.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
第三,是通过代码在两个位置设置凭据:
HttpWebRequest webRequest = WebRequest.Create(uirTradeStream) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = new NetworkCredential("user", "password", "domain");
webRequest.Proxy.Credentials = new NetworkCredential("user", "password", "domain");
在这里最适合您。