мы мигрируем в .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)