gpt4 book ai didi

c# - 使用不同的用户名连接到同一服务器

转载 作者:太空狗 更新时间:2023-10-29 20:42:01 26 4
gpt4 key购买 nike

我正在使用以下方法列出文件夹的内容:

private void TestFtp()
{
try
{
// List all of the files from FTP
FtpWebRequest ftprequest = (FtpWebRequest)WebRequest.Create(new Uri("ftp://m3database/recover/"));

ftprequest.Credentials = new NetworkCredential("myusername1", "********");

ftprequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftprequest.UsePassive = false;
ftprequest.Proxy = null;

using (var resp = ftprequest.GetResponse())
{
StreamReader reader = new StreamReader(resp.GetResponseStream());

MessageBox.Show(reader.ReadToEnd());
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}

我正在通过 FTP 连接到单个 Linux 服务器。我正在使用 myusername1myusername2 的凭据进行连接。

如果我使用 myusername1 凭据,我可以在使用此功能时列出目录内容,但是如果我使用 myusername2,则会出现以下错误:

The remote server returned an error: (503) Bad sequence of commands.

我尝试过的事情:

  1. 我尝试设置 ftprequest.KeepAlive = false
  2. 我已经尝试使用 UsePassive、Proxy 等的所有排列。
  3. 我能够使用启用了安全 FTP 的 FileZilla 连接到这两个用户名,并且它们都有效。如果不启用 FTP,两者都不会连接。

奇怪的是,我的代码将使用 myusername1 进行连接,而没有在我的代码中启用 SSL。

总结:

    如果未启用安全 FTP,
  • myusername1myusername2 将无法连接到 FileZilla。
  • myusername1 在未启用 ftprequest.EnableSsl 的情况下在我的 C# 方法中工作。
  • myusername2 将无法在我的 C# 方法中工作,无论 ftprequest.EnableSsl 是否启用。
  • 在我的 using() 语句行触发异常。

我刚刚注意到的其他事情,当我将鼠标悬停在我的 ftprequest 上时,它显示 NotSupportedException,但无论我使用哪组凭据都会出现这种情况

如果我在使用 myusername2 时将鼠标悬停在我的初始 ftprequest 上,它会显示在我的 using() 之前抛出的异常:

enter image description here

最佳答案

这可能是无稽之谈,但您是否尝试过使用 CredentialCache?

        System.Net.NetworkCredential nc = new System.Net.NetworkCredential("user", "password");
System.Net.CredentialCache cc = new System.Net.CredentialCache();
cc.Add(new Uri("ftp://m3database"), "Basic", nc);
System.Net.FtpWebRequest ftprequest = (System.Net.FtpWebRequest)System.Net.WebRequest.Create("ftp://m3database/recover/");
ftprequest.Credentials = cc;
ftprequest.Method = System.Net.WebRequestMethods.Ftp.ListDirectory;

using (var resp = ftprequest.GetResponse())
{
StreamReader reader = new StreamReader(resp.GetResponseStream());

MessageBox.Show(reader.ReadToEnd());
}
}

凭据缓存还为您提供了一系列身份验证类型选项(“NTLM”、“Digest”、“Kerberos”、“Negotiate”...)。

这里有更多内容 --> http://msdn.microsoft.com/en-us/library/59x2s2s6.aspx

关于c# - 使用不同的用户名连接到同一服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15291009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com