Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# FTP-不允许使用文件名_C#_Winforms_Ftp - Fatal编程技术网

C# FTP-不允许使用文件名

C# FTP-不允许使用文件名,c#,winforms,ftp,C#,Winforms,Ftp,我正在尝试使用基于的代码将文件上载到FTP服务器 出于测试目的,我的代码如下所示: string ftpUrl = "ftp://" + ftpSite + ftpPath + "test.txt"; //string ftpUrl = ftpSite; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl); request.Credentials = new NetworkCredential(ftpUsername

我正在尝试使用基于的代码将文件上载到FTP服务器

出于测试目的,我的代码如下所示:

string ftpUrl = "ftp://" + ftpSite + ftpPath + "test.txt";
//string ftpUrl = ftpSite;

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
request.Method = WebRequestMethods.Ftp.UploadFile;

StreamReader srcStream = new StreamReader(filePath);
byte[] fileContents = Encoding.UTF8.GetBytes(srcStream.ReadToEnd());
request.ContentLength = fileContents.Length;

Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
每次我试图上传文件时,FTP服务器都会返回一个“文件名不允许”错误。如果我使用像WS_FTP这样的FTP客户端应用程序,我就可以很好地用FTP传输相同的文件

有没有关于如何纠正这个问题的想法?我已经尝试过设置主动/被动FTP模式、keepalive和二进制模式,但没有任何运气

编辑


这是一个winforms应用程序-文件名来自OpenFileDialog提示符,FTP地址基于App.Config中的设置。

在许多情况下,您可能会遇到该特定错误


最常见的问题是,您正在访问的路径在允许的权限范围内无效,使用相对路径或更改w路径可能会使其得到修复。

在没有看到完整代码的情况下,我会说构建的FTP URL/路径很可能不正确,与通过FTP客户端手动连接到FTP站点时的预期情况相比


如果您发布app.config代码,以及如何为
ftpSite
ftpPath
赋值,这将有助于回答这个问题。

您可以提供ftpUrl的完整结果吗?您可以提供ftpSite和ftpPath的来源以及使用的值吗?这是一个内部服务器,但遵循的格式是:我敢打赌一群代表认为
ftpUrl
的部分缺少分隔符。@Tim我的观点是-您是否通过在
运行时调试ftpUrl的值来确认它是正确的?我知道理论上你可以通过FTP应用程序进行FTP。这就是为什么这里的每个人都怀疑代码中的FTP路径有问题。你能发布app.config中的内容吗?如果您担心隐私问题,只需将服务器名称替换为MYSERVER。我需要避开路径中的“/”,这就是我在VB.NET商店中使用C#所得到的结果@Tim Check out-这是处理URI的推荐方法,它将处理几乎所有的字符串连接内容。