【问题标题】:Can't acces FTP with Mono in Unity无法在 Unity 中使用 Mono 访问 FTP
【发布时间】:2018-06-14 01:03:33
【问题描述】:

我想在 Unity 2017.1.2.p4 中使用 C#(Mono 实现 - Stable .Net 3.5)访问 FTP。

为了测试,我只是尝试访问 FTP 并列出目录。

public class FTPManager
{
    private string host = null;
    private string user = null;
    private string pass = null;

   public FTPManager(string hostIP, string userName, string password)
   {
        host = hostIP;
        user = userName;
        pass = password;
        ServicePointManager.ServerCertificateValidationCallback += OnCertif;
   }

    public void Stop()
    {
        ServicePointManager.ServerCertificateValidationCallback -= OnCertif;
    }

    public void ListDirectory()
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(host);
        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
        request.EnableSsl = true;
        request.Credentials = new NetworkCredential(user, pass);
        try
        {
            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            Debug.Log(string.Format("Directory List Complete, status {0}", response.StatusDescription));

            response.Close();
        }
        catch (Exception e)
        {
            Debug.LogException(e);
        }
    }

    private bool OnCertif(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        return true;
    }
}

但我总是有同样的错误:

错误:TlsException:身份验证或解密失败。 Mono.Security.Protocol.Tls.RecordProtocol.ProcessAlert (AlertLevel alertLevel, AlertDescription alertDesc)
Mono.Security.Protocol.Tls.RecordProtocol.InternalReceiveRecordCallback (IAsyncResult asyncResult) Rethrow as IOException: 身份验证或解密失败。 Mono.Security.Protocol.Tls.SslStreamBase.AsyncHandshakeCallback (IAsyncResult asyncResult)

寻找其他帖子,我看到身份验证是匿名的,或者我的身份验证是正常的。 此外,FTP 需要 TLS 协议。

谢谢你帮助我。

【问题讨论】:

    标签: c# unity3d ftp mono


    【解决方案1】:

    我在尝试访问 AWS lambda 时遇到了同样的问题。 3.5 .Net 根本不支持新的 tls 协议。

    我已经找到了最简单的方法 - 只需使用 Unity WWW 对象,它就可以很好地工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2014-06-12
      相关资源
      最近更新 更多