首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS7中的反射组件

IIS7中的反射组件
EN

Stack Overflow用户
提问于 2011-11-10 00:19:24
回答 2查看 938关注 0票数 0

我有一个应用程序,在这个应用程序中,我使用反射调用方法,这些方法是通过使用NetTiers生成的不同类。

为了做到这一点,我通过使用以下命令获取执行程序集来加载NetTiers服务程序集:

代码语言:javascript
复制
Assembly.GetExecutingAssembly().CodeBase

并通过以下方式加载类:

代码语言:javascript
复制
Assembly.LoadFrom(<Assembly Path using above>.dll).GetType(<className>)

这在某些情况下似乎有效,但有时加载程序集失败,但有以下例外情况:

从执行:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\services\21d6c367\aa208bcd\assembly\dl3\e825b934\00f26fab_a39ecc01.dll类加载程序集时

错误:

和Stack Trace:

'file:///C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary System.IO.FileNotFoundException:无法加载文件或程序集、ASP.NET、System.IO.FileNotFoundException或其依赖项之一。系统找不到指定的文件。文件名:'file:///C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\services\21d6c367\aa208bcd\assembly\dl3\e825b934\00f26fab_a39ecc01.dll‘

在System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,String,RuntimeAssembly locationHint,StackCrawlMark& stackMark,Boolean,Boolean,Boolean ) at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence,StackCrawlMark& stackMark,Boolean,Boolean )

在System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile,Evidence,Byte[] hashValue,AssemblyHashAlgorithm hashAlgorithm,Boolean,Boolean,StackCrawlMark& stackMark)

在System.Reflection.Assembly.LoadFrom(String assemblyFile)

程序集绑定日志被关闭。若要启用程序集绑定故障日志记录,请将注册表值HKLM\Software\Microsoft\Fusion!EnableLog设置为1。注意:与程序集绑定失败日志记录相关的性能损失。若要关闭此功能,请删除注册表值HKLM\Software\Microsoft\聚变!EnableLog。

是否有更好的方法从程序集加载类,或者我是否遗漏了导致某些类发生此错误的东西,而其他类则没有?我正在使用IIS7运行应用程序。

EN

回答 2

Stack Overflow用户

发布于 2011-11-11 00:51:24

试着使用

代码语言:javascript
复制
Assembly.Load(Assembly.GetExecutingAssembly().GetName())

加载程序集。

但是,我认为GetExecutingAssembly不一定是可靠的,因为JIT内联等等,原因与GetCallingAssembly相同。GetEntryAssembly可能更好一些--但在web应用程序中,它可能是另一个动态生成的程序集,这要归功于Global.asax --也就是说,它不一定直接包含任何代码。

实际上,如果您事先知道程序集的名称,那么您可以像上面这样使用Assembly.Load(AssemblyName)方法,而不必担心文件名(按文件名加载并不总是一个好主意--如果从与运行时加载的位置不同的地方加载,则可以在内存中获得重复的程序集。

票数 1
EN

Stack Overflow用户

发布于 2011-11-10 16:08:42

从给定的路径中可以看到,您没有为dll指定名称,请参阅\.dll

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8073569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档