Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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# 为什么';t FTPWebRequest或WebRequest通常接受/路径?_C#_Ftpwebrequest - Fatal编程技术网

C# 为什么';t FTPWebRequest或WebRequest通常接受/路径?

C# 为什么';t FTPWebRequest或WebRequest通常接受/路径?,c#,ftpwebrequest,C#,Ftpwebrequest,我正在尝试从ftp web服务器自动执行一些上载/下载任务。当我通过客户端或Firefox连接到服务器时,为了访问我的目录,我必须指定如下路径: ftp://ftpserver.com/../AB00000/incoming/files string ftpserver = "ftp://ftpserver.com/../"; string path = "12345/01/01/file.toupload"; Uri = new Uri(ftpserver, path, true); 如

我正在尝试从ftp web服务器自动执行一些上载/下载任务。当我通过客户端或Firefox连接到服务器时,为了访问我的目录,我必须指定如下路径:

ftp://ftpserver.com/../AB00000/incoming/files
string ftpserver = "ftp://ftpserver.com/../";
string path = "12345/01/01/file.toupload";

Uri = new Uri(ftpserver, path, true);
如果我尝试访问此项:

ftp://ftpserver.com/AB00000/incoming/files
服务器抛出目录不存在的错误。因此,问题是:

我试图用第一个ftp地址创建一个FTPWebRequest,但它总是解析出“/../”部分,然后我的服务器说路径不存在

我试过这些:

    Uri target = new Uri("ftp://ftpserver.com/../AB00000/incoming/files");
FtpWebRequest request = (FtpWebRequest)WebReqeuest.Create(target);

在第一位中,当Uri对象被实例化时,路径已经不正确,在第二位中,它位于WebRequest.Create方法之后。知道发生了什么事吗

编辑:

此外,自从我发布了这篇文章之后,我已经尝试使用no-parse选项创建URI。我也试过这样的方法:

ftp://ftpserver.com/../AB00000/incoming/files
string ftpserver = "ftp://ftpserver.com/../";
string path = "12345/01/01/file.toupload";

Uri = new Uri(ftpserver, path, true);

它总是解析出根部分(“//”)。

你试过这样使用@符号吗

Uri target = new Uri(@"ftp://ftpserver.com/../AB00000/incoming/files");
FtpWebRequest request = (FtpWebRequest)WebReqeuest.Create(target);

试着逃离。。比如:

Uri target = new Uri("ftp://ftpserver.com/%2E%2E/AB00000/incoming/files");

这就是我在本文中发现的原理。

不是很确定,但可能是出于安全原因,因为允许“/../”URI可能会让人们在任何服务器的文件系统上自由导航


此外,该官员表示,解析URI时,执行的步骤之一实际上是删除“/../”段,因此这在C#library中不是问题,而是常规URI行为

试过之后,它也会做同样的事情。该字符串中的任何字符都不会与转义字符混淆,因此将其设置为vertbatim字符串不会有任何效果。就是这样。哇!服务器允许每个用户访问ftpusers/user文件夹,我必须以可以访问所有其他用户文件夹的帐户登录,这就是为什么必须包含/。。这对您仍然有效吗?根据上面的参考,在指定ftp url时,uri类不应压缩url。例如,以下ftp url:Uri Uri=new Uri(“);Console.WriteLine(Uri.AbsoluteUri);Console.WriteLine(Uri.PathAndQuery);应导致:AbsoluteUri:“PathAndQuery:/%2E%2E/%2E%2E%2E”,但我看到的不是预期的:AbsoluteUri:“PathAndQuery:/”