私は20秒ごとにFTPフォルダをチェックし、ファイルをローカルにコンピュータにコピーする簡単なWindowsサービスを作成しました。私はC#Windowsのタイムアウトは、リリースモードのFtpWebRequest.GetResponse()で行われます。
using (response = reqFTP.GetResponse())
FTPエラーを呼び出すときに、私は次のエラーをキャッチします。installutil ... System.Net.WebExceptionを使用してリリースをインストールするときにデバッグモードで
は、それはしかし、完璧に動作します:操作は時間指定ありアウト System.IO.Stream.Closeで System.Net.CommandStream.Disposeで System.Net.FtpWebRequest.RequestCallback(オブジェクトobj)で System.Net.FtpWebRequest.SyncRequestCallback(オブジェクトobj)(ブール処分)(で)at System.IO.Stream.Dispose()at System.Net.Connecti System.Net.FtpWebRequest でSystem.Net.FtpWebRequest.FinishRequestStage(RequestStageステージ)で System.Net.ConnectionPool.PutConnection(PooledStream pooledStream、 オブジェクトowningObject、のInt32 creationTimeout、ブールcanReuse)でonPool.Destroy(PooledStream pooledStream)完全な要求は以下の通りであるに....
FileMan.Service1.GetFileListで.GetResponse()();
string[] downloadFiles;
StringBuilder result = new StringBuilder();
WebResponse response = null;
StreamReader reader = null;
textWrite.WriteLine("attempting to get file list" + DateTime.Now + Environment.NewLine, true);
try
{
FtpWebRequest reqFTP;
ServicePointManager.DefaultConnectionLimit = 100;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(downloadSrc));
reqFTP.UseBinary = true;
textWrite.WriteLine("requestFTP...Passed..." + DateTime.Now + Environment.NewLine, true);
//reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
reqFTP.Proxy = null;
reqFTP.KeepAlive = true;
reqFTP.UsePassive = false;
reqFTP.Timeout = 8000;
//////////STOPS HERE
//response = reqFTP.GetResponse();
using (response = reqFTP.GetResponse())
{
// Do stuff
//...
reader = new StreamReader(response.GetResponseStream());
string line = reader.ReadLine();
while (line != null)
{
result.Append(line);
result.Append("\n");
line = reader.ReadLine();
}
result.Remove(result.ToString().LastIndexOf('\n'), 1);
return result.ToString().Split('\n');
}
}
catch (Exception ex)
{
textWrite.WriteLine("FTP error..." + ex + "..." + DateTime.Now + Environment.NewLine, true);
textWrite.Close();
if (reader != null)
{
reader.Close();
}
if (response != null)
{
response.Close();
}
downloadFiles = null;
return downloadFiles;
}
追加する必要があるアクセス権はありますか? これはデバッグモードで動作するので、コード自体は問題ありません。私はそれをブロックしていたものを理解する必要がありました。
P.S. 私はLocalSystemをアカウントとして使用していますが、installutilを使用してインストールする前に、リリース・ビルドを直接Cドライブにコピーしています。
マシンはFTPサーバーに接続しましたか?いくつかのファイアウォールがブロックしましたか –
デバッグモード(2015年まで実行中)では接続に問題はありませんでしたが、リリースモードでタイムアウトしました編集:ファイアウォールをオフにしてみました(運がない) – Jube
edrgkjl; rajklsafkjlsfkdajちょうどネットワークファイアウォールが回っていました。 ..............病気にファイアウォールに例外を追加し、安定したらこの質問に答えてください。 – Jube