Неверный формат входной строки в веб-запросе ftp

Я создаю файл на ftp-сервере. Но перед созданием файла на сервере я также проверяю, что он еще не существует. Тем не менее, большая часть системы работает нормально, но у одного из моих клиентов возникла проблема. Когда он запускает приложение, оно выдает исключение system.formateexception, т. е. входная строка имеет неправильный формат.

Я не могу понять эту проблему. Кто-нибудь может мне помочь?

Ниже приведен код для создания файла.

 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("[email protected]", "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. Это из-за такого типа имени файла?

Описание исключения

Спасибо, Навид


person Naveed Qamar    schedule 12.07.2012    source источник
comment
Строки в разделе try через это исключение, хотя я ловлю веб-исключение, но все же я получил system.formateexception.   -  person Naveed Qamar    schedule 12.07.2012
comment
@NaveedQamar какое значение внутри файла filename1   -  person HatSoft    schedule 12.07.2012
comment
cntsnwv0cn145.xx.xx.xxx.net-file.csv это значение в данном конкретном случае... Я пробовал использовать ip 192.001.012.211-file.csv, но это не работает. Но когда я использую эти имена файлов в своей системе, все работает нормально.   -  person Naveed Qamar    schedule 12.07.2012
comment
Можете показать свой код создания файла?   -  person pstrjds    schedule 12.07.2012


Ответы (4)


Кажется, что ошибка не возникает в «createFile (string filename1)». Если это так, стек должен быть похож на этот:

...
System.Convert.ToInt32(String value)
e2erta.e2erta1.YourFtpClass.createFile(string filename1) <- I would expect this line!
e2erta.e2erta1..ctor()
person Hailton    schedule 12.07.2012
comment
Включите отладочную информацию в файле web.config (‹отладка компиляции=true›). Таким образом, вы можете увидеть именно ту строку, где возникает ошибка. - person Hailton; 12.07.2012

Я думаю, что filename1 начинается с символа /. Вы можете использовать метод Path.Combine для обработки этого случая:

var path = Path.Combine("ftp://ftp.dunyameri.com/pt/", filename1);
var tmpReq1 = (System.Net.FtpWebRequest)System.Net.FtpWebRequest.Create(path);
...
person Rich O'Kelly    schedule 12.07.2012

URL-адрес должен быть примерно таким: «ftp://» + имя пользователя + «:» + пароль + «@» + адрес сервера + «:» + порт сервера + «/» + файл.

Попробуйте добавить порт.

person Rover    schedule 12.07.2012

В классе FtpWebRequest нет метода Create. .com/en-us/library/system.net.ftpwebrequest_methods

Пример, показанный в ссылке, приводит WebRequest.Create к FtpWebRequest, это может быть проблемой.

person HatSoft    schedule 12.07.2012
comment
cntsnwv0cn145.xx.xx.xxx.net-file.csv это значение в данном конкретном случае... Я пробовал использовать ip 192.001.012.211-file.csv, но это не работает. Но когда я использую эти имена файлов в своей системе, все работает нормально. - person Naveed Qamar; 12.07.2012