2013-03-04 169 views
0

我想访问我们网络外部的FTP服务器来获取CSV文件。下面是我使用登录失败:未知用户名或密码错误。 FTP与C#

string XMLPATH = @"\\server\file.csv"; 
FileWebRequest request = (FileWebRequest)FileWebRequest.Create(XMLPATH); 
request.Credentials = new NetworkCredential("admin", "password"); 
FileWebResponse response = request.GetResponse() as FileWebResponse; 
Stream stReader = response.GetResponseStream(); 

当我通过我的控制台应用程序运行此代码,我得到这个消息。

Logon failure: unknown user name or bad password 

如果我到服务器位置获取Windows资源管理器中的文件,我可以很好地登录并检索文件。之后,我的应用程序可以很好地访问该文件。我读这之前的堆栈线程

Logon failure: unknown user name or bad password? But I am using the right username and password

而且我将此添加到我的配置

<system.net> 
<defaultProxy useDefaultCredentials="false"> 
    <proxy usesystemdefault="True"/> 
</defaultProxy> 
</system.net> 

这改变不了什么。我也尝试将我的域添加到Credentials构造函数,但是这也不能解决任何问题。这种连接需要作为客户端应用程序完成,因此前一篇文章与我的文章有点不同。任何帮助将不胜感激。由于

编辑

因为我很好奇,我跑呼吁同时在Windows资源管理器和我的应用程序的请求Wireshark的痕迹。使用资源管理器时,它使用适当的凭证发送请求。但是,当我使用应用程序时,它会将请求作为我的计算机的登录名称(又名我的用户标识)发送。为什么当我在请求中发送请求凭证时,它仍然默认为登录用户?是否有我必须为此配置的设置?

+0

服务器是否使用Windows身份验证?如果是这样,你需要域\用户名格式 – 2013-03-04 14:33:27

+0

你的密码中的任何特殊字符? – JMK 2013-03-04 14:36:05

+0

@JMK是的,我的密码有'@'和'!'在其中 – 2013-03-04 15:11:17

回答

0

我怀疑你需要指定一个域(或计算机名):

new NetworkCredential("admin", "password", domainOrComputerName) 
+0

添加域或计算机名称会得到相同的结果 – 2013-03-04 15:13:17

0

我能够通过创建将要运行的应用程序的服务器上的本地用户,以解决这个问题。此用户的设置方式与读取FTP服务器权限的用户完全相同。

相关问题