У меня есть приложение, в котором я использую отражение для вызова методов, которые представляют собой разные классы, созданные с помощью NetTiers.
Для этого я загружаю сборку служб NetTiers, получая ExecutingСборка с использованием:
Assembly.GetExecutingAssembly().CodeBase
и загрузка класса с помощью:
Assembly.LoadFrom(<Assembly Path using above>.dll).GetType(<className>)
Иногда кажется, что это работает, однако иногда загрузка сборки завершается неудачей со следующим исключением:
Ошибка загрузки сборки из выполнения: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET \ services \ 21d6c367 \ aa208bcd \ Assembly \ dl3 \ e825b934 \ 00f26fab_a39ecc01 \ .dllкласс:
и трассировка стека:
System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'file: /// C: \ Windows \ Microsoft.NET\ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET \ services \ 21d6c367 \ aa208bcd \ assembly \ dl3 \ e825b934 \ 00f26fab_a39ecc01 \ .dll 'или одна из ее зависимостей.Система не может найти указанный файл.Имя файла: 'file: /// C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Временные файлы ASP.NET \ services \ 21d6c367 \ aa208bcd \ Assembly \ dl3 \ e825b934 \ 00f26fab_a39ecc01 \ .dll'
в System.Reflection.RuntimeAssembly._nLoad (имя_файла AssemblyName, строка кода базы, свидетельство AssemblySecurity, RuntimeAssembly locationHint, StackCrawlMark & stackMark, логическое значение throwOnFileNotFound, логическое значение для присваивания, присваивающее_обрабатывающее_применение, StackCrawlMark & stackMark, логическое значение forIntrospection, логическое значение suppressSecurityChecks)
в System.Reflection.RuntimeAssembly.InternalLoadFrom (строковый сборочный файл, Evidence securityEvidence, байтное значение*
в System.Reflection.Assembly.LoadFrom (String assemblyFile)
WRN: ведение журнала привязки сборкивыключен.Чтобы включить ведение журнала ошибок привязки сборки, установите для параметра реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) значение 1. Примечание. С журналированием ошибок привязки сборки связано некоторое снижение производительности.Чтобы отключить эту функцию, удалите значение реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog].
Есть ли лучший способ загрузить классы из сборок, или я пропускаю что-то, что приводит к этой ошибке для некоторых классов, но не для других?Я запускаю приложение, используя IIS7.