SSH.NET - Socket read operation has timed out after 30000 milliseconds.
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C#
- Estrellas
- 4.4k
- Forks
- 993
- Merge medio
- 9 d 21 h
- PR fusionados (30 d)
- 1
Descripción
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}"
};
}
}
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza con el ejemplo de C# proporcionado, centrándote en SftpClient.Connect y UploadAsync en torno al tiempo de espera de lectura del socket de 30 segundos informado. Reproduce el fallo con la configuración de SFTP de .NET 5.0 descrita y determina las condiciones del servidor, de la conexión o de la carga que lo desencadenan; no se ha indicado ningún archivo del repositorio ni ninguna prueba, por lo que los criterios de finalización aún no están definidos.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- csharp
- Área
- networking
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 20/100