XslCompiledTransform.Load () вызывает System.IO.FileNotFoundException

Мое веб-приложение (ASP.NET 2.0) использует веб-сервис (asmx на платформе 1.1) на той же машине. Получив взамен XML, я передаю его XslCompiledTransform для преобразования XML в HTML, и он отлично работает.

Вчера я часто получал System.IO.FileNotFoundException и не знаю, что вызывает такого рода проблемы.

Сначала я подумал, что речь идет о разрешении на чтение / запись в c: \ windows \ temp, а затем я убедился, что предоставил ему полное разрешение для сетевой службы (также, наконец, для всех -_-!), Но это не помогает.

Любые идеи или решения будут оценены.

-------------------- stack trace --------------------------
Exception: **System.IO.FileNotFoundException**
**Could not find file 'C:\WINDOWS\TEMP\sivvt5f6.dll'.**

   at System.IO.__Error**.WinIOError**(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 
rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames)
   at Microsoft.CSharp.CSharpCodeGenerator.FromDomBatch(CompilerParameters options, CodeCompileUnit[] ea)
   at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters options, CodeCompileUnit[] ea)
   at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromDom(CompilerParameters options, CodeCompileUnit[] compilationUnits)
   at System.Xml.Xsl.Xslt.Scripts.CompileAssembly(List`1 scriptsForLang)
   at System.Xml.Xsl.Xslt.Scripts.CompileScripts()
   at System.Xml.Xsl.Xslt.QilGenerator.Compile(Compiler compiler)
   at System.Xml.Xsl.Xslt.**Compiler.
Compile**(Object stylesheet, XmlResolver xmlResolver, QilExpression& qil)
   at System.Xml.Xsl.XslCompiledTransform.LoadInternal(Object stylesheet, XsltSettings settings, XmlResolver stylesheetResolver)
   at System.Xml.Xsl.**XslCompiledTransform.Load**(String stylesheetUri, XsltSettings settings, XmlResolver stylesheetResolver)
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
3 841
5

Ответы 5

Хорошо, это интересно. Я видел похожие проблемы с сериализаторами, но не с XslCompiledTransform.

Судя по названию, я ожидал, что это будет проблема с загрузкой включенных / импортированных преобразований, которую, вероятно, можно было бы исправить, поставив XmlResolver. Не найти самогенерируемые dll - это очень странно!

В качестве временной меры (пока вы исследуете проблему) вы можете посмотреть, происходит ли это по-прежнему с XslTransform. Я понимаю, что это не идеально (учитывая оптимизацию и т. д. В XslCompiledTransform), но это может, по крайней мере, позволить вашему приложению работать, пока вы исследуете ...

Первое, что я хотел бы сделать, это посмотреть журнал событий. Что-нибудь интересное? Также стоит проверить, не сошло ли ваше антивирусное ПО с ложными срабатываниями (маловероятно).

Следующее, что я хотел бы сделать, это изолировать приложение, то есть удалить материал 1.1 - поскольку вы вызываете его через страницу asmx (в отдельное приложение), это не должно быть фактором, поэтому вы должен (теоретически) сможете чтобы воспроизвести его просто из плоского файла xml. В идеале было бы хорошо иметь в вашем проекте страницу (возможно, ashx для простоты), на которой только пытается выполнить преобразование из локального файла.

Воспроизводится ли он с помощью простого xslt / xml? Чем проще вы можете сделать код, в котором есть проблема, тем ближе вы к тому, чтобы найти / исправить ее или получить что-то, что вы можете запустить в MS через "connect".

Большое спасибо, Марк, за ваш ответ.

В моем файле xsl нет внешнего ресурса, на который можно было бы ссылаться (без включения, импорта), поэтому XmlResolver не следует исследовать.

Преобразование отлично работает на другом сервере (у меня 2 сервера), а также на этом сервере, после того, как я сделал iisreset, он снова работает. Но не прошло и часа, как снова. Я проверил Event Viewer, и он зарегистрировал ту же ошибку, что и я !!

---------------- из средства просмотра событий ------------- Тип события: предупреждение

Источник события: ASP.NET 2.0.50727.0 Категория события: веб-событие Идентификатор события: 1309 Дата: 07.11.2008 Время: 14:07:37 Пользователь: N / A Компьютер: XXXX Описание: Код события: 3005 Сообщение о событии: Произошло необработанное исключение. Время события: 07.11.2008 14:07:37 Время события (UTC): 07.11.2008 7:07:37 AM Идентификатор события: f17058f2126c4a4abb1742a3099010b0 Последовательность событий: 25407 Возникновение события: 276 Код детали события: 0

Обрабатывать информацию: ID процесса: 1128 Имя процесса: w3wp.exe Имя учетной записи: NT AUTHORITY \ NETWORK SERVICE

Информация об исключении: Тип исключения: FileNotFoundException Сообщение об исключении: не удалось найти файл C: \ WINDOWS \ TEMP \ irdt-y8o.dll. .....

Любопытный. Я предполагаю, что все 3 имеют одинаковую конфигурацию (в частности, параметр временного каталога в основном файле web.config / machine.config)?

Marc Gravell 07.11.2008 11:00

После проверки подробностей и поиска в Google связанных тем

  1. Эта проблема обнаружена с помощью .Transform (), а также возникает с XmlSerialization, как сказал Марк. У Кристофа Щитко есть хорошая статья для исправление проблем.
  2. Кто-то сказал, что проблема может быть связана с некоторым обновлением патча окон, который может изменить поведение сериализатора.

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

    и да ... моя проблема была решена ..... перезапуском сервера (windows 2003;)

+1 У нас возникла точно такая же ошибка (файл не найден для DLL в C: \ Windows \ Temp) для XslCompiledTransform. Это было исправлено перезапуском сервера.

David White 25.01.2013 02:21

просто несколько идей по устранению неполадок:

  • Файл dll создан? Вы можете проверить, например, с помощью Filemon от Sysinternals, чтобы проверить, действительно ли скомпилирован XSLT.
  • Достаточно ли свободного места на диске?
  • Сколько файлов в вашей временной папке? Могут быть проблемы со слишком большим количеством файлов в% TMP%
  • Что еще работает на машине? Что-нибудь вроде антивируса, который может очистить папку Temp?

У меня такая же проблема с Windows Server 2003. Наше приложение ASP.NET использует веб-службу (на внешней машине через Интернет), и через некоторое время мы получаем это сообщение об ошибке.

Запуск утилизации в пуле приложений решает проблему, но я ищу ответ на причину проблемы.

Кто-нибудь?

Другие вопросы по теме