2010-07-22 4 views
2

У нас есть старое приложение asp, которое создает класс .NET com visible. В этом классе мы выполняем сериализацию для хранения нашего объекта в сеансе.Создание XMLSerializer в исключении .NET throws

Когда я вызываю следующую строку кода в своем тестовом классе, она работает нормально.

var cereal = new XmlSerializer(couponApplicator.GetType()); 

Однако, когда она вызывается на веб-сайте, и я отладки, он выдает следующее сообщение об ошибке:

{"Cannot execute a program. The command being executed was \"C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\csc.exe\" /noconfig /fullpaths @\"C:\\WINDOWS\\TEMP\\rwot-yx9.cmdline\"."} System.SystemException {System.Runtime.InteropServices.ExternalException} 

я, возможно, думал, что это была права, связанные таким образом, я попытался дать «все» полный контроль к папке windows/microsoft.net, а также к папке windows/temp. Для справки, я запускаю это на компьютере под управлением Windows XP. Есть идеи?

ответ

2

Выяснил это.

Инструмент блокировки IIS установил права запрета всем исполняемым файлам * .exe в каталоге windir. Поэтому мне пришлось удалить отрицать права доступа на эти два файла в окна/microsoft.net/рамки/v2.0/папки

cvtres.exe

csc.exe

Затем я дал учетные записи IUSR и IWAM считывают и выполняют разрешения как для этих файлов, так и для каталога временных файлов Windows.

Вот отличный пост объяснить подробнее: http://www.evilrob.org/journal/archives/2005/05/16/iusriwam-accoun.html

+0

Рад, что ты понял это! –

0

Я обнаружил, что у меня возникают проблемы с сборками сериализации, поскольку я часто использую сериализацию XML для сохранения настроек приложения и т. Д., Когда я работаю над приложениями Windows. Я обнаружил, что я намного успешнее развертывал в среде LUA, создавая типы Serializer раньше, используя sgen, вместо того, чтобы создавать их «на лету» во время выполнения.

Если вам действительно не нужно создавать их динамически во время выполнения, возможно, стоит посмотреть. Это довольно прямолинейно. Просто создайте событие post build в своем проекте .NET, который вызывает sgen на сборке, которая содержит типы, которые вы хотите сериализовать (убедитесь, что они помечены как [Serializable()]), просто включите сборку * .XmlSerializers, которая создается при развертывании, и вы не должен должен беспокоиться о каких-либо специальных разрешениях при использовании XmlSerializer.

Смежные вопросы