Не удалось найти файл "C:\WINDOWS\TEMP\xxxx.dll

Вот то, что я попробовал:

  1. Измените каталог, в котором хранятся временные файлы. (Измененный локально на каждый веб-сайт).
  2. Храните объект XMLSerialization в глобальной переменной и использовании это вместо того, чтобы создать новое каждый раз.
  3. Удалите все временные файлы в папке временного файла окон.
  4. Полномочия набора на windows\temp папке (я сделал, чтобы они установили на всех в данный момент только, чтобы попытаться решить вопрос).

Моя Установка следующие:

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;
6
задан GEOCHET 20 July 2013 в 00:37
поделиться

2 ответа

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

-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.

4
ответ дан 16 December 2019 в 21:38
поделиться

XML Serialization создает временную DLL с кодом сериализации в ней, где-то в каталоге temp. Она загружается в ваш App Domain при создании сериализатора. Возможно, вы удаляете эту DLL при очистке каталога Temp, и по какой-то причине она не регенерируется правильно.

2
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: