0

我有一个使用 COM+ 组件的应用程序。我试图让这个应用程序在 IIS 中的多个应用程序上工作。每个应用程序都有自己的应用程序池。这就是为什么我需要为每个应用程序分离一个 COM+ 组件。隔离 COM+ 应用程序的一种方法是使用 COM+ 分区。

我在 Windows Server 2008 R2 服务器上的组件服务管理工具中创建了分区。我创建了分区,并在每个分区中创建了一个 COM+ 应用程序。在 IIS 中,我有在不同应用程序池中运行的单独网站。我将每个网站配置为使用分区,并为其分配一个存在的分区 GUID。在我使用分区 guid 设置 IIS 并启用它以使用分区之后,在 IISRESET 之后,我在浏览器中运行网站并收到 HTTP 500 内部服务器错误。我查看了事件查看器,这是错误消息:Failed to create ASP Application XXX due to invalid or missing COM Partition ID

如果我在组件服务管理工具中禁用分区并在 IIS 中禁用分区,则应用程序可以工作。我需要能够使用分区来允许多个网站使用这些 COM+ 对象同时运行。

4

1 回答 1

1

经过对这个主题的大量研究,我找到了解决方案:不要使用 IIS 中的 PartitionId,也不要启用 IIS 中的分区。将它们保留为默认值。

对此的解决方案如下:每个分区都应该被指定为一个用户的默认分区,并且每个 IIS 应用程序(和每个应用程序池)应该在默认分区使用的相同用户上运行。因此,基本上,如果您有两个名为 web1 和 web2 的 IIS 应用程序,以及两个应用程序池:app1 和 app2,两个用户 user1 和 user2 以及两个分区:part1 和 part2。web1 应该在 user1 下运行,app1 也应该在 user1 下运行(app1 是 web1 的应用程序池)。然后在组件服务中 user1 应该有默认分区:part1。然后,当 web1 将搜索 COM+ 组件时,它将首先尝试在分配给该 IIS 应用程序用户的分区中搜索它:user1。User1 具有默认分区 part1,因此它会找到它。

提示:要在 windows server 2008 R2 上启用 com+ 分区,请转到组件服务 > 我的电脑 > 右键单击​​它 > 属性 > 选项选项卡 > 选中启用分区以及另一个:为用户选择分区时检查本地存储。分区只能在 Windows Server 版本中启用。此选项在 Windows 7 中被禁用,我找不到启用它的方法。

希望这可以帮助。

不要忘记在每个分区下添加 COM+ 应用程序并在那里添加用户,以便用户可以访问它们。因此,将用户添加到 Partition Roles 和 COM+ Partition Users 目录中,在 Component Services 的 My Computer 下。

于 2013-08-01T13:10:59.250 回答