我的ASP.NET应用程序通过使用
Type.GetType()
在完全限定的字符串引用上,并像您一样实例化该类型的对象。
然而,最近它一直在抛出异常,因为找不到类型-但只是偶尔。我还不能随意复制,但它通常是在对一些与bin无关的内容(如母版页或ascx标记)进行简单更改之后发生的。在我重建站点或重新启动IIS之前,它不会自行排序。更改web.config并不能修复它。
在web.config中添加对程序集的显式引用,而不是希望在bin目录中找到它,这样可以减少问题的发生,但并不能完全阻止问题的发生。不知怎么的,某个地方认为移除我的组件是个好主意。
我已经调试到它找不到类型和足够正确的地方,尽管在上一页的加载中,程序集似乎从
Thread.GetDomain().GetAssemblies()
. 显然,当应用程序处于活动状态时,我不能冒险这样做,因此我手动调用
Assembly.LoadAssembly()
在DLL上,我知道只需要看看是否值得创建一个方法来定位程序集。这也不起作用,因为当我尝试使用该类时,它抛出了以下错误:
[A]xxx.modules.customcasestudy不能
被铸造成
[b]xxx.modules.customcasestudy.A型
源于'xxx.modules,
版本=1.0.0.0,文化=中性,
上下文中的publicKeyToken=空
位置处的“loadnone”
'C:\development\xxx\xxx.web\bin\xxx.modules.dll'。
B型源于'xxx.modules,
版本=1.0.0.0,文化=中性,
上下文中的publicKeyToken=空
位置处的“默认”
'C:\windows\microsoft.net\framework\v2.0.50727\临时
ASP.NET
文件\root\fff474e0\8c6aec7e\assembly\dl3\325b4335\009dbd67_b2fbc901\xxx.modules.dll'。
一直以来,所需的dll都在bin文件夹中,等待-不,请求使用,更不用说web.config中的显式引用了。
在追查罪犯,甚至作为最后手段,如何将该程序集加载到“默认”上下文中的任何信息都将非常感谢!