我有一个使用此代码用 C# (.Net 3.5) 编写的应用程序。
using System;
using System.Net;
string strURI = String.Format("ftp://x{0}ftp/%2F'{1}'", parm1, parm2);
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(strURI);
ftp.Proxy = null;
ftp.KeepAlive = true;
ftp.UsePassive = false;
ftp.UseBinary = false;
ftp.Credentials = new NetworkCredential("uid", "pass");
ftp.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse response = (FtpWebResponse)ftp.GetResponse();
...
我已将其翻译成 F# (.Net 4.0) 以在我的应用程序中使用。
open System.Net
let uri = sprintf "ftp://x%sftp/%%2F'%s'" parm1 parm2
let ftp = FtpWebRequest.Create(uri) :?> FtpWebRequest
ftp.Credentials <- new NetworkCredential("uid", "pass")
ftp.Method <- WebRequestMethods.Ftp.DownloadFile
ftp.Proxy <- null
let response = ftp.GetResponse() :?> FtpWebResponse
...
在这一点上,FSI 抱怨。
System.Net.WebException:远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。
然而,C# 应用程序运行并成功下载了该文件。我在 F# 中缺少什么(除了 4.0 中没有的属性,即 KeepAlive、UsePassive 和 UseBinary)?