SSH.NET - Socket read operation has timed out after 30000 milliseconds.
Nessuno ha ancora preso questa issue.
- Lingua principale
- C#
- Stelle
- 4.4k
- Fork
- 993
- Merge medio
- 9g 21h
- PR unite (30g)
- 1
Descrizione
Hi @drieseng I'm getting issue also on my SFTP setup using the SSH.NET latest version using .NET 5.0. It works fine until I got this issue.
Socket read operation has timed out after 30000 milliseconds.
This is my current code.
using (SftpClient sftpClient = new SftpClient(await getSftpConnection(export.Schedule.Host,
export.Schedule.Username,
export.Schedule.Password,
export.Schedule.KeyFile,
export.Schedule.Parapharase,
export.Schedule.LogonType, log)))
{
try
{
if (!sftpClient.IsConnected)
{
log.LogInformation($"Connecting Sftp....");
do
{
try
{
sftpClient.Connect();
}
catch (Renci.SshNet.Common.SshConnectionException e)
{
log.LogInformation($"Connection error: {e.Message}");
}
} while (!sftpClient.IsConnected);
log.LogInformation($"Done connecting Sftp");
}
//Send file per devicename
foreach (var _perDevice in export.ExportTablePerDevice)
{
log.LogInformation($"Device {_perDevice.DeviceName}");
try
{
var csv = export.Schedule.Layout.Equals("LAYOUT 05") ? ReportHelper.ConvertToDat(export.ExportTable) :
ReportHelper.ConvertToCsv(_perDevice.ExportTable, export.Schedule.Layout, _perDevice.TopUserHeader);
var stream = ZipArchiveExtensions.GenerateStreamFromString(csv);
string filename = "";
if (export.IsExportDevices)
{
filename = _perDevice.DeviceName.Replace(@"/", "_") + "_" + DateTime.Now.Ticks + "." + export.Schedule.ExportFormat.ToLower() ?? "csv";
}
else
{
filename = (!String.IsNullOrEmpty(export.Schedule.FileName) ? export.Schedule.FileName.Replace(@"/", "_").Replace("#tick", DateTime.Now.Ticks.ToString()) :
_perDevice.DeviceName.Replace(@"/", "_") + DateTime.Now.Ticks) + "." + export.Schedule.ExportFormat.ToLower() ?? "csv";
}
var file = $"/{export.Schedule.FilePath}/{filename}";
await sftpClient.UploadAsync(stream, file);
}
catch (Exception ex)
{
sftpClient.Disconnect();
sftpClient.Dispose();
log.LogInformation($"Device error: {ex.Message}");
}
}
sftpClient.Disconnect();
response = new StatusCodeResponse()
{
Code = HttpStatusCode.OK.ToString(),
HttpStatus = (int)HttpStatusCode.OK,
Message = $"Successfully sent export {export.Schedule.Name} via sftp server"
};
}
catch (Exception ex)
{
sftpClient.Disconnect();
log.LogInformation($"An exception has been caught {ex.Message}");
response = new StatusCodeResponse()
{
HttpStatus = (int)HttpStatusCode.InternalServerError,
Code = HttpStatusCode.InternalServerError.ToString(),
Message = $"Error sending export {export.Schedule.Name} via sftp server: {ex.Message}"
};
}
}
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia con l'esempio C# fornito, concentrandoti su SftpClient.Connect e UploadAsync in relazione al timeout di lettura del socket di 30 secondi segnalato. Riproduci il problema con la configurazione SFTP .NET 5.0 descritta e determina le condizioni del server, della connessione o del caricamento che lo attivano; non sono indicati file del repository né test, quindi i criteri di completamento non sono ancora definiti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- csharp
- Ambito
- networking
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 20/100