3

我正在 ftp 服务器上创建一个文件。但是在服务器上创建文件之前,我还要检查它是否不存在。但是,大多数系统都运行良好,但我的一个客户有问题。当他运行应用程序时,它会抛出 system.formatexception 即输入字符串的格式不正确。

我无法理解这个问题。有谁能够帮我?

以下是创建文件的代码。

 public string createFile(string filename1)
           {

            StreamWriter sw1 = null;
            System.Net.FtpWebRequest tmpReq1;
            try
            {
            tmpReq1 = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create("ftp://ftp.dunyameri.com/pt/" + filename1);
            tmpReq1.Credentials = new System.Net.NetworkCredential("naveed@dunyameri.com", "xxxxx");
            FtpWebResponse response = (FtpWebResponse)tmpReq1.GetResponse();
            }
            catch (WebException ex)
            {
                FtpWebResponse response2 = (FtpWebResponse)ex.Response;
                if (response2.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
                    {
                        // I am creating file here
                    }
                    else
                    {
                        return ex.ToString();
                    }
            }
            return "File Created";

        }

我在互联网上搜索过可能是因为字符串包含 0 或点。在这个特定的系统案例中,文件名包含点和 0。是因为这种类型的文件名吗?

异常说明

谢谢, 纳维德

4

4 回答 4

2

似乎“createFile(string filename1)”中没有发生错误。如果是这样,堆栈应该类似于:

...
System.Convert.ToInt32(String value)
e2erta.e2erta1.YourFtpClass.createFile(string filename1) <- I would expect this line!
e2erta.e2erta1..ctor()
于 2012-07-12T14:10:50.753 回答
0

我最好的猜测是filename1从一个/角色开始。您可以使用该Path.Combine方法来处理这种情况:

var path = Path.Combine("ftp://ftp.dunyameri.com/pt/", filename1);
var tmpReq1 = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(path);
...
于 2012-07-12T14:03:15.550 回答
0

网址应该是“ftp://”+用户名+“:”+密码+“@”+serverAddress+“:”+serverPort+“/”+文件。

尝试添加端口。

于 2012-07-12T14:05:01.600 回答
0

FtpWebRequest 类没有 Create 方法参见链接http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest_methods

链接上显示的示例将 WebRequest.Create 转换为 FtpWebRequest 这可能是问题

于 2012-07-12T14:05:05.247 回答