【发布时间】:2013-01-14 19:30:15
【问题描述】:
我正在尝试在我的 FTP 服务器上创建一个目录。谷歌搜索显示我this question here.所以我按照乔恩写的作为他的答案,并且有:
private static void MakeDirectory(string directory)
{
Log("Making directory...");
var request = (FtpWebRequest)WebRequest.Create(directory);
request.Method = WebRequestMethods.Ftp.MakeDirectory;
request.Credentials = new NetworkCredential("user", "pass");
try
{
using (var resp = (FtpWebResponse)request.GetResponse()) // Exception occurs here
{
Log(resp.StatusCode.ToString());
}
}
catch (WebException ex)
{
Log(ex.Message);
}
}
我有一个方法可以验证目录是否存在:
public bool DirectoryExists(string directory)
{
bool directoryExists;
var request = (FtpWebRequest)WebRequest.Create(directory);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential("user", "pass");
try
{
using (request.GetResponse())
{
directoryExists = true;
}
}
catch (WebException)
{
directoryExists = false;
}
return directoryExists;
}
检查确实有效。如果存在,则返回true,如果不存在,则返回false。但是,每当我运行我的MakeDirectory() 时,都会在上述行中遇到异常:
The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
我错过了什么吗?为什么GetResponse() 可以用于我的目录检查,但不能用于我的MakeDirectory()?
【问题讨论】:
-
可能您的登录名没有所需的权限
-
@Dan-o:我想过,调查过,但是权限在那里。
-
您确定指向该文件的路径是可访问且存在的吗? StackOverflow中有类似的讨论和解决方法:stackoverflow.com/questions/9118286/…
-
是的,我已经验证了我的服务器的路径。我实际上是在尝试在我的基本目录(
ftp://my-site.com)中创建一个文件夹,所以我的目录看起来像ftp://my-site.com/newFolder。