尝试为我的FTPWebRequest指定证书时,出现“未实现”异常。这是我的代码:
ftpRequest = (FtpWebRequest)WebRequest.Create(ftpURI);
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.EnableSsl = true;
X509Certificate cert = X509Certificate.CreateFromCertFile(certPath);
X509CertificateCollection certCollection = new X509CertificateCollection();
certCollection.Add(cert);
ftpRequest.ClientCertificates = certCollection;
具体来说,这是从最后一行获取输出的错误:
System.NotImplementedException: The method or operation is not implemented.
at System.Net.FtpWebRequest.set_ClientCertificates (System.Security.Cryptography.X509Certificates.X509CertificateCollection value) [0x00005] in <9f8c4786222746238eb929db40bf8dd1>:0
at (wrapper remoting-invoke-with-check) System.Net.FtpWebRequest.set_ClientCertificates(System.Security.Cryptography.X509Certificates.X509CertificateCollection)
我已经能够使用其他程序连接到FTP服务器,因此我知道该服务器在具有指定凭据的指定URI上可用。我还验证了证书正在加载中,因为我能够从中打印出信息(certCollection的Count为1)。
不确定是否相关,但我使用Unity作为基础。在我的Unity设置中,我已将.NET 4.x指定为我的兼容性级别。是否有人对为什么这种特定方法返回未实现的原因有任何见解?这可能是Unity怪癖,还是我使用错了?
谢谢
编辑:我试图在不同网络上的另一台计算机上运行该程序,并且结果相同,所以从我所知这不是安装/配置问题。
[跟进Unity开发人员并提交错误报告后,他们回到我身边确认这是Unity 2019及更早版本中使用的Mono版本的问题。
他们计划在Unity 2020的某个时候更新其Mono版本,这应该可以解决此问题。