具有程序集解析的IIS托管Wcf服务是可能的
本文关键字:Wcf 服务 托管 IIS 程序集 | 更新日期: 2023-09-27 17:50:02
是否可以通过iis托管的wcf服务中的程序集解析事件加载程序集?我不想通过GAC或bin文件夹加载程序集。这可能吗?谢谢。
我认为你不能使用AppDomain。AssemblyResolve事件,但您可以尝试使用MEF来解析使用DirectoryCatalog的实际实现。
因此,您的后台SVC代码(或者您可以删除后台代码并将SVC指向单独程序集中的类)将看起来像这样(未经测试)。我没有试过这种特殊的方法,但我看不出有什么理由它不起作用。
public class YourServiceClass : YourServiceContract
{
[Import]
private IContract Implementation { get; set; }
private DirectoryCatalog _directoryCatalog = null;
private CompositionContainer _container = null;
public YourServiceClass()
{
_directoryCatalog = new DirectoryCatalog(YourDirectoryPathHere);
_container = new CompositionContainer(_directoryCatalog);
_container.ComposeParts(this);
}
//Operation
public void DoSomething()
{
Implementation.DoSomething();
}
}
如果有意义的话,还可以将MEF代码移动到基类中。如果你是MEF的新手,这里有一个使用MEF和DirectoryCatalog的教程。