C# 我可以在IIS管理的网站中跨AppDomains共享DLL吗?

C# 我可以在IIS管理的网站中跨AppDomains共享DLL吗?,c#,iis,appdomain,C#,Iis,Appdomain,我们有一个用C#编写的web服务,托管在IIS下。我们使用AppDomains来分离任务的调用——每个调用都在一个单独的域中运行。代码执行如下操作: public class Simplified { public void Run() { AppDomain workDomain = AppDomain.CreateDomain(...); var workUnit = (IWorkUnit)workDomain.CreateInstanceAn

我们有一个用C#编写的web服务,托管在IIS下。我们使用AppDomains来分离任务的调用——每个调用都在一个单独的域中运行。代码执行如下操作:

public class Simplified
{
    public void Run()
    {
        AppDomain workDomain = AppDomain.CreateDomain(...);
        var workUnit = (IWorkUnit)workDomain.CreateInstanceAndUnwrap(...);
        workUnit.Execute(...);
        //Done - but keep the workUnit around in case we need it again
    }
}

但是,每个
AppDomain
都在加载单独的DLL副本,这占用了大量的处理时间。我知道您可以通过某种方式使程序集与加载域无关,以便在所有AppDomain之间共享它们。如何为我们的IIS web服务做到这一点?

事实证明,它与设置一样简单

setup.LoaderOptimization = LoaderOptimization.MultiDomain;

在用于创建域的AppDomainSetup对象上。这在IIS下可以正常工作,结果是它与设置一样简单

setup.LoaderOptimization = LoaderOptimization.MultiDomain;
在用于创建域的AppDomainSetup对象上。这在IIS下运行良好

“域无关程序集”是您要查找的内容“域无关程序集”是您要查找的内容