Проблемы с временным каталогом C # XmlSerializer

#c# #serialization #permissions

#c# #сериализация #разрешения

Вопрос:

У меня есть консольное приложение C #, вызываемое из SQL Server Agent job.

Процесс выполняется от имени созданной мной сетевой учетной записи.

Первоначально я получал ошибки, потому что сериализатор пытался выполнить запись во временный каталог другого пользователя (учетная запись для самой службы агента SQL Server), но я исправил это с помощью параметра конфигурации

  <system.xml.serialization>
      <xmlSerializer tempFilesLocation="c:\temp"/>
 </system.xml.serialization>
  

Однако теперь я получаю сообщение об ошибке "Unable to generate a temporary class (result=1).

 error CS0016: Could not write to output file 'c:temp2euqs4ou.dll' -- 'Access is denied. ' " 
  

Обе учетные записи имеют полный контроль над c:temp. I’m stumped.

Я искал это весь день, но безуспешно. Я сопротивляюсь тому, чтобы сделать учетную запись службы администратором компьютера, но я сделаю это, если придется.

Комментарии:

1. Возможно ли, что запущено 2 экземпляра вашего EXE-файла, и оба пытаются получить доступ к этому файлу одновременно?

2. Как вы запускаете приложение consol от имени «сетевой учетной записи, которую я выбрал» из задания агента SQLServer?

Ответ №1:

Почему бы не предварительно сгенерировать сборки XmlSerializer с sgen.exe ?

sgen.exe /assembly:MyFile.dll