3

ftpサーバーでファイルを作成しています。しかし、サーバー上にファイルを作成する前に、ファイルがまだ存在していないことも確認します。ただし、ほとんどのシステムで正常に動作していますが、クライアントの1つに問題があります。彼がアプリケーションを実行すると、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が含まれています。これは、このタイプのファイル名が原因ですか?

例外の説明

ありがとう、Naveed

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

URL は、"ftp://" + userName + ":" + password + "@" + serverAddress + ":" + serverPort + "/" + file のような形式にする必要があります。

ポートを追加してみてください。

于 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 に答える
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 に答える