C# FTPWebRequest类的奇怪行为
使用FtpWebRequest类时,我注意到一种奇怪的行为。我想创建一个FtpWebRequest,从德国气象局获取一些数据。所以我做了如下事情:C# FTPWebRequest类的奇怪行为,c#,.net,ftp,C#,.net,Ftp,使用FtpWebRequest类时,我注意到一种奇怪的行为。我想创建一个FtpWebRequest,从德国气象局获取一些数据。所以我做了如下事情: var request = (FtpWebRequest)WebRequest.Create(requestUri); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; request.Credentials = Credentials; var response = reque
var request = (FtpWebRequest)WebRequest.Create(requestUri);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = Credentials;
var response = request.GetResponse() as FtpWebResponse;
使用此代码,我得到以下错误:
远程服务器返回错误:(407)代理身份验证
必需的
这是非常清楚的,我想添加一个代理将解决这个问题,但我发现了一些奇怪的事情。此代码正在运行:
var request = (FtpWebRequest)WebRequest.Create(requestUri);
request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
request.Credentials = Credentials;
request.Proxy = null;
var response = request.GetResponse() as FtpWebResponse;
有人能给我解释一下吗?我使用调试器在这两种情况下都将代理保存为null。为什么在第二种情况下我没有收到错误消息,反之亦然?默认情况下,
WebRequest
使用系统范围的代理(IE设置中定义的代理)。如果该代理需要凭据,则需要提供凭据。通过将Proxy
设置为null,可以使用直接连接完全绕过代理
你可以从中看到这一点。当您设置代理时,它的标志为true,这是在决定要使用的实际代理时。如果未明确指定代理,它将隐式使用
WebRequest。默认情况下,WebRequest使用系统范围的代理(IE设置中定义的代理)。如果该代理需要凭据,则需要提供凭据。通过将Proxy
设置为null,可以使用直接连接完全绕过代理
你可以从中看到这一点。当您设置代理时,它的标志为true,这是在决定要使用的实际代理时。如果未显式指定代理,它将隐式使用WebRequest.InternalDefaultWebProxy