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

Asp classic 组件服务应用程序在Windows Server 2012上未正常运行,asp-classic,windows-server-2012,com+,Asp Classic,Windows Server 2012,Com+,我对这些旧东西还不熟悉。。。我已经在Windows Server 2012上设置了COM+应用程序(经典ASP),但只能通过取消选中应用程序属性中的“强制对此应用程序进行访问检查”来运行它。它现在运行正常,但每当应用程序试图以任何方式访问数据库时,我都一无所获。我已经检查了对必要文件夹的访问权限(据我所知),并且用户(身份选项卡中的本地用户)具有读/写权限。有什么想法吗?还需要更多信息吗?您可能已经知道,Windows Server版本是权限问题(又称用户身份问题)不断变化的雷区。在2008年起

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

您可能已经知道,Windows Server版本是权限问题(又称用户身份问题)不断变化的雷区。在2008年起作用的东西在2012年可能不再起作用

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

意外标识的典型示例包括系统、网络服务和IUSR

这些选项的位置如下,例如:

  • 在IIS中,您的网站有一个指定的应用程序池,在其中运行。应用程序池具有用户身份分配
  • 在IIS中,您的虚拟文件夹映射到Windows下的物理文件夹,并且存在访问安全性
  • 使用COM,您可以进一步设置标识选项-这是“运行方式”标识,它是为您执行COM组件的有效用户
  • 使用诸如MS SQL Server之类的数据库,您可以获得用户连接安全性的概念,可以将其设置为使用Windows用户身份验证(信任Windows用户)或所需的用户ID/pwd。因此,如果在代码中使用ADODB,则必须提供一个连接字符串,该字符串必须与DB期望并允许的连接设置相匹配
根据您的描述,我假设您已经启动并运行了IIS站点,并且您的问题仅限于从COM组件访问DB。您需要确定COM组件如何连接到DB,并检查DB是否接受正在使用的凭据。如果要对数据库使用Windows身份验证,则需要确认正在使用的运行方式标识。在我的设置中,我们创建了一个专门用于COM的专用Windows用户,这样我们就可以完全确定该身份,在COM组件最详细的日志记录中,我们捕获了run as身份,只是为了确认它已正确连接

我们也对IIS应用程序池用户的专用Windows用户执行相同的操作。一般来说,您最好通过自己分配标识来确定正在使用哪个标识,而不是使用默认标识。此外,默认设置(如网络服务)在Windows中的权限总体上似乎在减少

注意事项-另一方面,不要给专用用户超出其需要的访问权限,例如,当您感到沮丧或遇到权限问题时,不要让他们成为管理员组的成员。当然,在非常临时的基础上分配这些任务,以确认访问权限是问题所在,但请确保尽快删除这些任务


编辑:当你的评论进来时,我已经写了一半了。你说缺少一个组件——我没有考虑到这一点,因为你似乎在说配置有效,但COM无效。很好地解决了你的问题。我将把这个答案留在原地,因为我所写的一些东西可能对未来走相同或相似道路的人们有用

什么样的数据库?是阿多还是别的?什么类型的连接字符串(如果有)?请提供有关数据库连接的更多信息。你能创建一个ODBC连接,从同一台服务器上成功地进行测试吗?听起来像是对数据库的访问权限。根据连接到DB的方式,这可能是COM组件代码中硬编码连接字符串的问题,或者COM组件设置中的运行方式标识不正确。您认为数据库连接是如何工作的?是硬编码的连接字符串,还是数据库使用Windows身份验证?谢谢大家-我们使用的是SQL server,我相信是数据库使用Windows身份验证。。。遗憾的是,我99%的时间都在.NET中工作,而且不理解旧代码@VanquishedWombat我认为您可能对com组件设置中不正确的运行方式标识是正确的。。。我刚换了我自己的账户,最后得到了要显示的数据。但是,我仍然不知道为什么我们的普通服务帐户不能工作,因为我相信它拥有与我的帐户相同甚至更多的权限。因此,我必须添加一个缺少的数据访问组件。由于某种原因,我第一次添加它时它不起作用,但现在它起作用了。是否正在禁用com组件,然后启用并再次启动它。。。或者这个线程:。。。有些东西使它起作用了。感谢您帮助我使用ODBC连接走上正确的道路,并使用正确的运行方式标识。如果你们三个人中有人给我回信,我会接受的。