组件服务应用程序在Windows Server 2012上运行不正常

时间:2017-05-30 18:52:06

标签: asp-classic windows-server-2012 com+

我对这些旧东西不熟悉......我已经在Windows Server 2012上设置了我的COM +应用程序(经典ASP),但只能通过取消选中“对此应用程序执行访问检查”来运行它应用属性。它现在运行正常,但只要应用程序试图以任何方式命中数据库,我什么都得不到。我检查了对必要文件夹的访问权限(据我所知),用户(本地用户,在标识选项卡中)具有读/写访问权限。有任何想法吗?是否需要更多信息?

1 个答案:

答案 0 :(得分:1)

正如您可能已经知道的那样,Windows Server版本是一个不断变化的许可问题(即用户身份问题)的雷区。 2008年的工作可能不再适用于2012年。

经典ASP解决方案中的组件几乎都有可能在Windows环境中作为不同的身份运行。

意外身份的典型示例是系统,网络服务和IUSR。

这些选项咬人的地方,例如:

  • 在IIS中,您的网站有一个已分配的应用程序池,可在其中运行。应用程序池具有用户身份分配;
  • 在IIS中,您的虚拟文件夹映射到Windows下的物理文件夹,并且存在访问安全性;
  • 使用COM,您可以设置另一个身份选项 - 这是' run-as' identity,这是为您执行COM组件的有效用户。
  • 使用MS SQL Server等数据库,您可以获得用户连接安全性的概念,可以设置为使用Windows用户身份验证(信任Windows用户)或userid / pwd。因此,如果您在代码中使用ADODB,则必须提供一个连接字符串,您必须将该匹配字符串与DB期望并允许的连接设置相匹配。

根据您的描述,我假设您已启动并运行IIS站点,并且您的问题仅限于从COM组件访问数据库。您需要确定COM组件如何连接到数据库,并检查数据库是否接受正在使用的凭据。如果您对数据库使用Windows身份验证,则需要确认正在使用的run-as标识。在我的设置中,我们创建了一个专门用于COM的专用Windows用户,这样我们就可以完全确定身份,而在我们最简单的COM组件记录中,我们捕获run-as身份只是为了确认它所有都正确连线。

我们对IIS应用程序池用户的专用Windows用户也这样做。一般来说,最好通过自己分配而不是采用默认值来确定使用哪个身份。此外,Windows服务等默认设置似乎在Windows中的权限数量正在减少。

谨慎提示 - 另一方面,请不要为您的专用用户提供超出他们需要的访问权限,例如,当您感到沮丧或感觉通过权限问题时,将其设为管理员组的成员。当然,在非常临时的基础上分配这些以确认访问权限是问题,但请务必尽快删除此类分配。

编辑:当你的评论进来时,我写了这一半。你说有一个缺失的组件 - 我没有考虑到这种潜力,因为你似乎在说配置有效,但COM没有。干得好,可以解决您的问题。我会留下这个答案,因为我写的一些内容可能对将来走同样或类似路径的人有用。