C# FTP и службы windows
Привет
Я хочу сделать сервис на C#, и мой сервис загрузит файл на FTP
Мой код :
public string[] directoryListSimple(ITEM Line, string directory) { try { /* Create an FTP Request */ ftpRequest = (FtpWebRequest)WebRequest.Create(host + "/" + directory); /* Log in to the FTP Server with the User Name and Password Provided */ ftpRequest.Credentials = new NetworkCredential(user, pass); ftpRequest.UseBinary = true; ftpRequest.UsePassive = false; ftpRequest.KeepAlive = true; /* Specify the Type of FTP Request */ ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory; /* Establish Return Communication with the FTP Server */ ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); /* Establish Return Communication with the FTP Server */ ftpStream = ftpResponse.GetResponseStream(); /* Get the FTP Server's Response Stream */ StreamReader ftpReader = new StreamReader(ftpStream); /* Store the Raw Response */ string directoryRaw = null; /* Read Each Line of the Response and Append a Pipe to Each Line for Easy Parsing */ try { while (ftpReader.Peek() != -1) { directoryRaw += ftpReader.ReadLine() + "|"; } } catch (Exception ex) { Line.ERROR = "TRUE"; CL_TRAVAIL.Instance.LOG("ERROR 2 = " + ex.ToString()); } ftpReader.Close(); ftpStream.Close(); ftpResponse.Close(); ftpRequest = null; /* Resource Cleanup */ /* Return the Directory Listing as a string Array by Parsing 'directoryRaw' with the Delimiter you Append (I use | in This Example) */ try { string[] directoryList = directoryRaw.Split("|".ToCharArray()); Line.ERROR = "FASLE"; return directoryList; } catch (Exception ex) { Line.ERROR = "TRUE"; CL_TRAVAIL.Instance.LOG("ERROR 2 = " + ex.ToString()); } /* Return an Empty string Array if an Exception Occurs */ return new string[] { "" }; } catch (Exception ex) { Line.ERROR = "TRUE"; CL_TRAVAIL.Instance.LOG("ERROR 3 = " + ex.ToString()); return new string[] { "" }; } }
Моя ошибка находится в этой строке : ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
<pre> 10:40:29 - ERROR 3 = System.Net.WebException: La connexion sous-jacente a été fermée : Une erreur inattendue s'est produite lors de la réception. à System.Net.FtpWebRequest.CheckError() à System.Net.FtpWebRequest.SyncRequestCallback(Object obj) à System.Net.CommandStream.Abort(Exception e) à System.Net.CommandStream.CheckContinuePipeline() à System.Net.FtpDataStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) à System.Net.FtpDataStream.Dispose(Boolean disposing) à System.IO.Stream.Close() à System.IO.StreamReader.Dispose(Boolean disposing) à WindowsService.FTP.directoryListSimple(ITEM Line, String directory)
Что я уже пробовал:
Привет
Я использую свой код в приложении windows form, и он работает, но когда я использую его в своем сервисном приложении, он не работает.
У кого-нибудь есть идея
Спасибо
F-ES Sitecore
Похоже, что есть проблема с подключением к ftp-серверу, это может быть проблема сетевого брандмауэра, это может быть не работает ftp-сервер, это могут быть разрешения. Мы никак не можем объяснить вам, почему сервер, к которому у нас нет доступа, не может подключиться к ftp-серверу, к которому у нас также нет доступа. Я бы начал с попытки подключиться к ftp-серверу с другого сервера с помощью инструментов командной строки и посмотреть, работает ли это по крайней мере.
Member 2521084
что такое учетная запись службы ?
Laurent mortroux
Спасибо
да , я деактивирую свой брандмауэр, но почему он работает в windows form pallication и не работает в сервисном приложении как на одном компьютере.
Но мое приложение работает с моим аккаунтом и сервисом с системным аккаунтом
Member 2521084
что означает "локальная" системная учетная запись?. Попробуйте настроить его под своей учетной записью администратора
Laurent mortroux
я пытаюсь с учетной записью администратора, у меня та же проблема.
12:23:48 - ERROR 3 = System.Net.WebException: La connexion sous-jacente a été fermée : Une erreur inattendue s'est produite lors de la réception. à System.Net.FtpWebRequest.CheckError() à System.Net.FtpWebRequest.SyncRequestCallback(Object obj) à System.Net.CommandStream.Abort(Exception e) à System.Net.CommandStream.CheckContinuePipeline() à System.Net.FtpDataStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) à System.Net.FtpDataStream.Dispose(Boolean disposing) à System.IO.Stream.Close() à System.IO.StreamReader.Dispose(Boolean disposing) à WindowsService.FTP.directoryListSimple(ITEM Line, String directory)
Member 2521084
обычно учетная запись администратора имеет доступ к сети. Чтобы быть уверенным, проверьте его еще раз с помощью сетевой учетной записи. Чтобы быть уверенным, у вас есть правильное имя пользователя и пароль в строке "ftpRequest.Учетные данные = new NetworkCredential(user, pass);"?
хтх
Laurent mortroux
привет
Да я использую этот ftp credentiel whith filezila и это тот же файл config для сервиса и формы заявки1
Спасибо
Laurent mortroux
Я разделяю один и тот же класс между моим проектом чтобы быть Шур у меня есть один и тот же код