具有程序集解析的IIS托管Wcf服务是可能的

本文关键字:Wcf 服务 托管 IIS 程序集 | 更新日期: 2023-09-27 17:50:02

是否可以通过iis托管的wcf服务中的程序集解析事件加载程序集?我不想通过GAC或bin文件夹加载程序集。这可能吗?谢谢。

具有程序集解析的IIS托管Wcf服务是可能的

我认为你不能使用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的教程。