我尝试使用CreateApplicationHost为一个简单的Web服务器创建一个Asp.NET应用程序主机,但是当它尝试创建编组对象的示例时,我得到了一个System.IO.FileNotFoundException
:
host = (MyMarshaller)ApplicationHost.CreateApplicationHost((MyMarshaller), virtualDir, physicalDir);
我相信这个错误是因为它找不到包含类MyMarshaller的程序集-如果我把这个程序集放在physicalDir的bin目录中,那么一切都正常,但是我不想这样做(我也不想把我的程序集放在GAC中)。
有什么方法可以控制CreateApplicationHost在哪里查找我的程序集吗?(注意,MyMarshaller
类与上面的代码行包含在同一个程序集中)
1条答案
按热度按时间krugob8w1#
简短的回答是,这是不可能做到的,但是Cassini源代码揭示了一个替代解决方案。
上面的链接不再起作用,但是CodePlex上的CassiniDev project看起来非常接近(可能是衍生作品),并且包含相同的解决方案。
解决方案是避免使用
CreateApplicationHost
,而是"自己动手"-在本例中,使用反射创建内部"BuildManagerHost"类型的示例并调用"RegisterAssembly",如下所示