我可以在我的 IIS 托管网站中跨 AppDomain 共享 dll 吗?

Posted

技术标签:

【中文标题】我可以在我的 IIS 托管网站中跨 AppDomain 共享 dll 吗?【英文标题】:Can I share dlls across AppDomains in my IIS managed web site? 【发布时间】:2013-11-01 11:42:33 【问题描述】:

我们有一个用 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 的单独副本 - 这会占用大量处理时间。我知道您可以以某种方式使程序集加载域中性,以便它们在所有 appdomains 之间共享。如何为我们的 IIS Web 服务执行此操作?

【问题讨论】:

“域中性程序集”是您正在寻找的内容 【参考方案1】:

原来它就像设置一样简单

setup.LoaderOptimization = LoaderOptimization.MultiDomain;

关于用于创建域的 AppDomainSetup 对象。这在 IIS 下工作正常

【讨论】:

以上是关于我可以在我的 IIS 托管网站中跨 AppDomain 共享 dll 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的网站上托管我的 WCF 服务?

使用 IIS Express 托管网站(临时)

在 IIS 中托管可以从任何 Web 客户端访问的网站?

在我的网络上的其他机器上查看我的 IIS 托管站点

我可以在 IIS 之外托管 ASP.NET 网站吗?

IIS 托管 - 网站要求登录提示