7

我正在开发一个 wpf 应用程序,我想使用具有不同用户名的 C# 在 ftp 上创建一个目录,如果它已经存在,则将文件保存在现有目录中。

我已经成功创建了检查现有目录的逻辑,但是在创建新目录时,我在运行时遇到了异常:

The remote server returned an error: (550) File unavailable (e.g., file not found, no access).

我在互联网上检查了不同的解决方案,大多数人都说这是由于写权限。我正在分配 ftp 文件夹写入权限,但我仍然遇到问题。请帮忙?

这是我的代码:

    static void CreateFtpFolder(string source)
    {
        FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(source);
        request.Credentials = new NetworkCredential(ftpusername, ftppassword);
        request.Method = WebRequestMethods.Ftp.MakeDirectory;
        request.UsePassive = true;
        request.UseBinary = false;
        request.KeepAlive = false;
        request.Proxy = null;

        FtpWebResponse ftpResp = request.GetResponse() as FtpWebResponse;

    }

我在FtpWebResponse.

4

3 回答 3

5

您的代码看起来不错.......您是说您也分配了权限。唯一的问题是您可能传递了错误的“源”,这导致了问题..检查您的源字符串,它可能有错误......

路径应该像

 WebRequest request = WebRequest.Create("ftp://host.com/directory123");

如果您指定这样的路径,这意味着将使用名称“directory12”创建目录

 WebRequest request = WebRequest.Create("ftp://host.com/directory123/directory1234");

这意味着“ ftp://host.com/directory123/ ”应该已经存在并且将创建名为“directory1234”的新目录希望它会有所帮助

于 2013-06-18T10:37:18.663 回答
3

如果问题是 Windows 服务器端权限问题并且您有权访问此 FTP 服务器,您可以通过修改权限并为您在实际物理目录上进行身份验证的用户名添加“写入”权限来解决问题.

例如,如果“ ftp://host/ ”指向您服务器上的“c:\inetpub\ftproot”,则允许该目录上的用户具有“写入”权限。

我正在设置自己的 IIS 7 FTP 服务器,并花了一两个小时试图让这样一个简单的 C# 客户端代码片段工作,所以我想我会为那些处于类似情况的人做出贡献。

于 2015-03-26T22:06:09.520 回答
1

如果目录已存在,则会出现该错误。相当非描述性的错误消息(大声笑)。必须对 request.GetResponse() 的调用进行尝试捕获

try
{
FtpWebResponse ftpResp = request.GetResponse() as FtpWebResponse;

}
catch ( Exception ex ) { /* ignore */ }
于 2013-12-20T03:21:27.300 回答