这个话题已经出现了很多次, 那就是 "为什么我必须在 gac 中注册 aspNETserve.Core.dll 才能运行 aspnetserve?" 这个问题的答案与 aspnetserve 如何使用 asp. net 宿主设施有关, 因此首先提供一些背景信息。
背景
在内部使用 System.Web.Hosting 命名空间来管理 appdomain。内部到 aspnetserve 是一个类称为 domainhook 在 aspNETserve. core 命名空间。当 aspnetserve 请求要创建一个 appdomain 时, 它请求在该 appdomain 内实例化 DomainHook, 以便在两个域之间发生一定程度的交互。这种交互主要集中在 asp. net 请求的处理上。
整个过程的唯一障碍是 aspatserve 用于创建 appdomain 的方法, 应用程序管理器. createobject 使您指定 asp. net 应用程序的物理路径。事实证明, 物理路径也用于 appdomain 的 basedirectory 属性, 以指定要探测的路径以进行 dll 解析。这正是 gac 要求的来源。
由于托管 web 应用程序可能不包含其 bin 目录中的 aspNETserve.Core.dll, 因此成功加载该程序集 (实例化 DomainHook 类型) 的唯一其他方法是将该程序集放置在 gac 中。
解决方案
目前, aspnetserve 有一个开放的任务, 正式找到一个工作周围的上述方案, 删除 gac 安装要求。然而, 在过渡期间, 一个快速而简单的解决方案是简单地将 aspnetserve. 核心程序集放置在您希望托管的网站的 bin 目录中。虽然无论如何都不优雅, 但却是有意义的。