Чтение содержимого файла в общей папке с помощью ядра .Net 2.2, работающего на Linux - PullRequest
0 голосов
/ 06 марта 2019

Код ниже работает под окнами, но в linux возникает исключение, когда домашний диск пользователя, кажется, добавляется к полученному LocalPath при попытке открыть файл.Та же проблема, если я использую FileStream.

тестирование в соответствии с RHEL 7.6

Кто-нибудь знает об обходном пути или основной причине?

Пришлось ли сделать фактический общий файловый ресурс анонимным в фрагментахниже, поэтому, пожалуйста, игнорируйте любую опечатку в пути, факт, что это работает на окнах, важен бит.

Вывод:

IsUnc True isFile True LocalPath=\\lnasvr001.partners\dfs\Analytics\suite\demo\externaldata\DemoDataset\temp\diagnose.json AbsolutePath=/dfs/Analytics/suite/demo/externaldata/DemoDataset/temp/diagnose.json

Исключение:

Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/home/appuser/testapp/\\lnasvr001.partners\dfs\Analytics\suite\demo\externaldata\DemoDataset\temp\diagnose.json'.
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
   at System.IO.File.InternalReadAllText(String path, Encoding encoding)
   at System.IO.File.ReadAllText(String path)

Myкод:

static void Main(string[] args)
    {
        var path = "file://lnasvr001.partners/dfs/Analytics/suite/demo/externaldata/DemoDataset/temp/diagnose.json";
        Uri uri = new Uri(path);
        Console.WriteLine($"IsUnc {uri.IsUnc} isFile {uri.IsFile} LocalPath={uri.LocalPath} AbsolutePath={uri.AbsolutePath}");
        Console.WriteLine($"File Content Length {File.ReadAllText(uri.LocalPath).Length}");
    }
...