Вот то, что я попробовал:
Моя Установка следующие:
IIS7 на выделенном сервере окон 2008 года. Веб-сайт записан в ASP.NET с помощью Delphi. У меня есть несколько XML-файлов, для которых нужна сериализация так не всего один. Мой веб-сайт говорит с веб-сервисом и обрабатывает XML (я предполагаю, что это - часть, которая повреждает все),
У кого-либо есть какие-либо предложения кроме того, что перечислено? Я читал об использовании SGEN, чтобы предварительно скомпилировать объект сериализации, но это будет работать больше чем на один XML-файл? Я действительно не знаю много об этом.
Вот пример:
Это - код для одного из моих XML-файлов. StockXMLSer сохранен глобально и после того, как тестирование будет только создано однажды на сайт.
function IntGetSTOCK_ITEMS(S: TStream): STOCK_ITEMS;
begin
if not Assigned(StockXMLSer) then begin
StockXMLSer := XmlSerializer.Create(STOCK_ITEMS.ClassInfo);
OutputDebugString('StockXMLSer Serializer Created');
end;
Result := STOCK_ITEMS(StockXMLSer.Deserialize(S));
end;
Клон может быть полезен для вас. Я не верю, что тебе нужно что-то делать с клоном.
-121--3338888-Сериализация XML создает временную библиотеку DLL с кодом сериализации в ней, где-то во временном каталоге. Он загружается в домен приложения при создании сериализатора. Возможно, вы удаляете эту DLL, когда очищаете каталог Temp, и по какой-то причине он не восстанавливается правильно.
-121--4349294-Для отладки кода сериализации необходимо добавить в код некоторые параметры настройки. См. следующую статью о msdn.
Поиск и устранение распространенных проблем, связанных с GroupSerializer
Также существует тщательная хитрость, которая позволит сохранить файлы, созданные во временной папке, чтобы вы могли видеть происходящее.
При обычных обстоятельствах GroupSerializer удаляет источник C # файлы для классов сериализации когда они больше не нужны. Там является выключателем диагностики без документов, однако, который будет инструктировать GroupSerializer удаляет, чтобы оставить их файлы на диске. Можно установить переключиться в файле .config вашего приложения file:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<switches>
<add name="XmlSerialization.Compilation" value="4" />
</switches>
</system.diagnostics>
</configuration>
Этот переключатель присутствует в файл .config, исходные файлы C # остаются во временном каталоге. Если вы работа на компьютере под управлением Windows 2000 или более поздней версии, местоположение по умолчанию для временного каталога\Documents and Settings\\LocalSettings\Temp или \ Temp, для web приложения, работающие под ASPNET учетная запись. Файлы C # легко пропустить потому что у них очень странный вид, произвольно сгенерированные имена файлов, что-то вроде: bdz6lq-t.0.cs. GroupSerializerPreCompiler задает это переключатель диагностики, чтобы можно было открыть файлы для проверки строк на , который должен представлять (а) GroupSerializerPreCompiler сообщения об ошибках компиляции в Блокноте или Visual Studio.
XML Serialization создает временную DLL с кодом сериализации в ней, где-то в каталоге temp. Она загружается в ваш App Domain при создании сериализатора. Возможно, вы удаляете эту DLL при очистке каталога Temp, и по какой-то причине она не регенерируется правильно.