Наша встроенная библиотека баз данных использует метод FileStream.Lock(long, long)
для реализации блокировки. У нас есть клиент, использующий версию нашей библиотеки. NET Standard 2.0 в своем небольшом приложении ASP. NET -Core Razor Page, который сообщает, что его приложение получает PlatformNotSupportedException «Блокировка / разблокировка областей файла не поддерживается в этой платформы. Используйте FileShare для всего файла вместо этого. " при развертывании в MacOS (но не при развертывании в Windows). Я проверил с клиентом, и это на Macbook Pro 2013 года с бесплатной * Cat, установленной Catalina на APFS.
Конечно, блокировка областей файлов не является действительно неподдерживаемой в MacOS - иначе нам должно быть гораздо больше жалоб! Итак, нам интересно, есть ли что-то, что может отсутствовать или быть неправильным в проекте или установке, которая объясняет ошибку и, будем надеяться, будет исправима. Или мы могли бы как-то столкнуться с ограничением в MacOS, которое является более жестким, чем другие платформы? Мы используем некоторые большие специальные значения далеко за пределами большинства файлов (что допустимо и в большинстве случаев работает нормально), но мы уже ограничили их, чтобы они не превышали положительный диапазон Int32
со знаком, поскольку некоторые платформы, по-видимому, отображают long
аргументов в int
значений.
Кто-нибудь сталкивался с этой ошибкой раньше и решал, что было не так? Или на самом деле нет способа поддержать блокировку области файла для. NET программ на Ma c?