System.Data.DataSet.ReadXml-需要代理身份验证

时间:2018-08-03 13:50:53

标签: c# asp.net .net

我有一段旧代码(单个.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()));

但仍然出现相同的错误

1 个答案:

答案 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");

在这里最适合您。