Я только недавно боролся с этим, и хотел обновить это с решением, которое я получил, чтобы работать. Я собрал последний код и собрал его сам, чтобы при необходимости вносить изменения. В файле SupportClass.cs, начиная со строки 481, есть некоторый код, который проверяет, что буфер файла был очищен с использованием неуправляемого кода.
if (OS.IsWindows)
{
if (!FlushFileBuffers(fileStream.Handle))
throw new System.IO.IOException();
}
else if (OS.IsUnix)
{
if (fsync(fileStream.Handle) != IntPtr.Zero)
throw new System.IO.IOException();
}
else
{
throw new NotImplementedException();
}
Я закомментировал эти строки и перестроил библиотеку и смог работать со средним уровнем доверия. Я работал локально со средним уровнем доверия, а также собирал простое тестовое приложение, развернутое на GoDaddy. Я не уверен, что означает удаление этих строк. Похоже, они дублируют поведение вызова fileStream.Flush()
, предшествующего этому блоку, но я не уверен.