将 IIS 站点从 w2k 迁移到 w2k3 时出现问题

将 IIS 站点从 w2k 迁移到 w2k3 时出现问题

旧服务器是 Windows 2000,原始安装人员对几乎所有内容的回答都是 C:\ --> 所有人 --> 完全控制。但是,确实有一个安装文档,似乎在一定程度上是可行的。

  • 创建本地管理员 com 用户
  • 创建引用该用户和站点提供的一些 dll 的 COM+ 应用程序
  • 安装了 .net 版本 1.0、1.1、2.0(我尝试在每个版本下运行,错误没有变化)

服务器对象错误 'ASP 0178 : 80070005' Server.CreateObject 访问错误 /Include/fnLookups.asp,第 10 行 检查权限时对 Server.CreateObject 的调用失败。拒绝访问此对象。

第 10 行看起来是:

设置 objClient = Server.CreateObject("fooUser.CfooUser")

我查看了系统日志,发现:

应用程序特定的权限设置未向用户 mydomain\myusername SID (mySID) 授予 CLSID 为 {280D5CF7-80A4-40AC-844C-FE3653F02FF1} 的 COM 服务器应用程序的本地激活权限。可以使用组件服务管理工具修改此安全权限。

这算是某种进步,它很好地获取了 COM 应用程序和我的 ID。我将自己添加到 dcomdnfg 中“我的电脑”对象的“访问权限”和“启动和激活权限”中 - 但我的叫喊似乎指向了错误的树。

我跑过去mskb198432和我能做到的一样好,尽管它似乎是针对早期版本,但也没有乐趣。

欢迎任何想法。

编辑-已尝试的建议列表

  • 排除了 x64 差异,在 x32 中运行出现同样的问题。
  • 排除文件权限
  • “授予每个人本地启动和激活权限,以确保这是 COM 权限问题” - 完成了,没有乐趣
  • IIS5 隔离模式已启用

编辑 - 我可以在旧的 Windows 2k 服务器上查看任何可能提供一些见解的内容吗?

答案1

您是否尝试将相关用户添加到本地 DCOM 用户组?

http://technet.microsoft.com/en-us/library/cc738214(WS.10).aspx

答案2

这个错误就是线索:

应用程序特定的权限设置未向用户 mydomain\myusername SID (mySID) 授予 CLSID 为 {280D5CF7-80A4-40AC-844C-FE3653F02FF1} 的 COM 服务器应用程序的本地激活权限。

COM 对象不应以您的身份运行,而应以 IUSR_MachineName 或网络服务用户(运行 IIS 的用户)的身份运行。您不希望每个访问站点的用户都以他们的身份运行 DLL - 这不是个好主意。

确保您的虚拟目录指向的物理目录的权限使运行 IIS(IUSR_machinename)的用户具有正确的权限,并且 COM 中注册的 DLL 具有 IIS 用户的正确权限。

在 IIS 中,权限很难调试,因为安全事件并不总是记录到安全事件日志中。身份验证和访问控制诊断 1.0 工具是调查权限问题的绝佳工具。

http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1285

答案3

为了完整起见,以 ASP.Net 1.0 和 ASP.Net 2.0 运行网站之间存在差异。尽管该框架向后兼容,但我建议尝试以 Framework 1.1 网站的形式运行该网站。这可能需要加载 Framework 1.1。

但是代码示例表明这是典型的 ASP。因此问题与 COM 对象的安全性有关。确保已注册 DLL,并且您授予权限的对象也有可能依赖于您未授予访问权限的另一个 DLL。

此外,在更改安全性或进行任何更改时,请重新启动 IIS 以及组件服务器中的组件本身。由于内存缓存和其他扩展原因,它通常需要启动。

答案4

就像一些用户抱怨的那样,你不清楚这是经典的 asp 还是 asp.net。话虽如此,根据你的主题行和错误消息,以下是我的看法

这是一个 .NET 应用程序吗

  1. 确保 ASP.NET 已正确安装。
  2. 确保该站点在 IIS 中配置为 ASP.NET 2.0。

您的应用程序似乎正在访问 COM 对象,因此请确保 IIS 工作进程有权访问该组件。您可以尝试运行 FILEMON 和 REGMON 来准确找出哪个组件是罪魁祸首。如果该组件位于 Program Files/Common 文件夹中,请确保在该文件夹上设置了正确的权限。

在 ASP.NET 甚至 Classis ASP 中访问 COM 组件通常需要进行 B.... 故障排除。

相关内容