sshnet / sshnet/SSH.NET

SSH.NET - Socket read operation has timed out after 30000 milliseconds.

Abierto
#889 1 comentario 0 reacciones 0 asignados Ver en GitHub

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

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.