.netcore (Mac / Linux) копирование / загрузка файла из общей сетевой папки - PullRequest
0 голосов
/ 27 сентября 2019

мы мигрируем в .netcore (2.2) и Kubernetes и встречаемся с ситуацией, когда копируем файл из общей папки Windows.

тот же проект в Windows, WebClient.DownloadFile работает.

    var remotefile = "file://ipaddress/folder/file.csv";
    using (var client = new WebClient ())
    {
       //save to local
       client.DownloadFile(remotefile, "file.csv");
     } 

но при использовании vs для Mac мы получили ошибку: System.Net.WebException: не удалось найти файл '/Volumes/Data/xxxpath/bin/Debug/netcoreapp2.2/**\ipaddress\folder\file.csv

тогда мы переключаемся на использование sharpcifs, но получаем другую ошибку при получении входного потока SharpCifs.Smb.SmbException: Не удалось подключиться, 0.0.0.0 <00> /2.xxx [1.xxx:55060-> 2.xxx:445] ---> SharpCifs.Util.Transport.TransportException: транспорт закрыт при согласовании --->

     var remoteFile = new SmbFile("smb://ipaddress/folder/file.csv");
     using (var inputStream = remoteFile.GetInputStream())
            {
                using (var outputStream = new SmbFileOutputStream(file))
                {
                    var buf = new byte[16 * 1024 * 1024];
                    int len;
                    while ((len = inputStream.Read(buf)) > 0)
                    {
                        outputStream.Write(buf, 0, len);
                    }
                }
            }

Существуют ли другие варианты для копирования / загрузки файла из сетиобщая папка для .netcore?

--------- обновление -------------------

Я нашелВышеуказанная ошибка вызвана портом, так как случайный порт используемой библиотеки не открыт на моем Mac.Я попытался указать открытый,

SharpCifs.Config.SetProperty("jcifs.smb.client.lport", "1400");

, но он не работает, используемый локальный порт все еще случайный.затем я развертываю приложение на k8s (все порты открыты), ошибка «не удалось подключиться» исчезла, но получила новую:

[System.Net.Sockets.SocketException (107): Socket not connected 
 at System.Net.Sockets.Socket.
UpdateStatusAfterSocketErrorAndThrowException(SocketError error, 
String callerName)   
at System.Net.Sockets.Socket.get_RemoteEndPoint()   
at SharpCifs.Smb.SmbTransport.Connect()   
at SharpCifs.Smb.SmbTree.TreeConnect(ServerMessageBlock andx,  
ServerMessageBlock andxResponse)   
at SharpCifs.Smb.SmbFile.DoConnect()   
at SharpCifs.Smb.SmbFile.Connect()   
at SharpCifs.Smb.SmbFile.Connect0()   
at SharpCifs.Smb.SmbFile.Open0(Int32 flags, Int32 access, Int32 attrs,
Int32 options)  
at SharpCifs.Smb.SmbFile.Open(Int32 flags, Int32 access, Int32 attrs, Int32 options)   
at SharpCifs.Smb.SmbFileInputStream..ctor(SmbFile file, Int32 openFlags)
...