#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