移动IIS站点从W2K到W2K3的问题

旧的服务器是Windows 2000,原始设置人员的答案几乎一切都是C:\ – > Everyone – >完全控制。 但是,这里有一个设置文档,似乎工作到一定程度。

  • 创build一个本地pipe理员com用户
  • 创buildCOM +应用程序引用该用户和一些DLL随该网站提供
  • 安装.net版本1.0,1.1,2.0(我试过在每个版本下运行,没有改变的错误)

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

10号线似乎是:

set objClient = Server.CreateObject(“fooUser.CfooUser”)

我发送到系统日志,我有:

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

这是sorting的进展,它拿起COM应用程序和我的ID很好。 我把自己添加到了dcomdnfg中“我的电脑”对象的“访问权限”和“启动和激活权限” – 但我的咆哮似乎是针对错误的树。

我尽可能地跑过mskb198432 ,虽然它似乎是针对早期版本,但在那里也没有喜悦。

任何想法都欢迎。

编辑 – 尝试build议列表

  • 排除了x64的差异,在x32下运行同样的问题。
  • 排除了文件权限
  • “给每个人本地启动和激活权限,以确保它是一个COM权限问题” – 完成,没有喜悦
  • 启用IIS5隔离模式

编辑 – 有什么我可以看看在旧的Windows 2K服务器,可以借给一些见解?

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

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

    这个错误是线索:

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

    COM对象不应该像你一样运行,它应该作为IUSR_MachineName或networking服务用户(运行IIS的用户)运行。 你不希望每个访问这个站点的用户都像他们一样运行这个DLL – 这个主意不好。

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

    权限很难在IIS中进行debugging,因为安全事件并不总是logging到安全事件日志中。 身份validation和访问控制诊断1.0工具是一个很好的工具,用于调查权限问题。

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

    为了完整起见,将网站作为ASP.Net 1.0和ASP.Net 2.0运行是有区别的。 尽pipe框架是向后兼容的,但是我build议尝试将该站点作为Framework 1.1站点运行。 这可能需要加载Framework 1.1。

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

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

    根据微软networking科技博客,这个错误是由于Windows 2003 SP1或SP2中引入的增强的DCOM安全性引起的。

    这个博客有一个非常详细的运行这个问题,以及如何解决这个问题。

    http://blogs.msdn.com/puneetgupta/archive/2008/01/19/server-createobject-failed-while-checking-permissions.aspx

    像一些用户抱怨,你不清楚,如果这是经典的asp或asp.net。 这就是说,与您的主题和错误消息,这里是我的2美分

    这是一个.NET应用程序

    1. 使得ASP.NET正确安装。
    2. 确保在IIS中为ASP.NET 2.0configuration了该站点。

    它看起来像你的应用程序正在访问一个COM对象,所以确保IIS工作进程有权访问该组件。 您可以尝试运行FILEMON和REGMON来确定究竟哪个组件是罪魁祸首。 如果该组件位于Program Files / Common文件夹中,请确保在该文件夹上设置了正确的权限。

    在ASP.NET中甚至是Classis ASP中访问COM组件通常是一个B …来排除故障。

    这是一个经典的ASP应用程序,而不是一个ASP.NET应用程序。 确保托pipe该应用程序的IIS应用程序池正在您创build的用户的上下文中运行。 另外,请确保应用程序不在任何其他托pipeASP.NET应用程序的应用程序池中。

    正如其他人所说,这是一个经典的ASP和COM问题 – 似乎与.NET没有任何关系。

    所有我可以添加到所说的是不要忘记,以确保用户有权访问文件系统上的COM对象的DLL。

    我将自己添加到dcomcnfg中“我的电脑”对象的“访问权限”和“启动和激活权限”

    我的电脑上有两个不同的安全设置 – 限制和默认值。 你需要仔细检查你编辑的默认值,并且限制至less比你的默认值更高(尽pipeIIRC,每个人都可以有本地激活)。

    您还应该深入到组件本身,并确保它使用的是默认安全性。 如果它是自定义的,那么你也需要编辑它(记住限制)。

    对于故障排除,我非常想尝试给每个本地启动和激活权限,以确保它是一个COM权限问题。 IIRC,组件启动中的错误可能会产生误导性的错误信息,这会使您一时难以理解。

    编辑:你也应该确保事件日志中引用的GUID实际上是你认为它的组件。 使用Regedit来查找GUID,并检查AppName。 这可能不是已安装的组件,而是依赖项。

    尝试给“networking服务”访问“Temp”目录(C:\ WINDOWS \ Temp)

    我希望这有帮助 ;-)

    你是否运行应用程序池作为你的帐户(mydomain \ myusername)? 如果是这样,您将需要将该帐户添加到IIS_WPG。

    您可能还需要将IIS_WPG添加到“分布式COM用户”组或在组件服务中查找实际项目,并直接授予对IIS_WPG的访问权限

    ASP.Net工作进程w3wp.exe默认运行在W2K3上的NETWORK SERVICE帐户下。

    检查此帐户是否有权访问和实例化对象。

    上周我正在处理这个问题。 您需要确保ASPNET用户(是的,我知道它是传统的ASP)有权“作为批处理login”和“作为服务login”。

    从pipe理工具,本地安全策略,打开本地策略 – >用户权限分配,并确保aspnet用户有这些策略的权利。

    也可以添加IWAM_和IUSR_。

    您可能想要通过KB 899965 ,它有一些相当详细的步骤,似乎可能是一个更具体的问题。

    希望有所帮助!

    除了其他build议之外,我还会尝试在IIS 5隔离模式下运行网站,以排除IIS 5(Server 2000)和更安全的IIS 6(Server 2003)之间的差异。

    1. 打开IISpipe理工具
    2. 右键单击“网站”,然后从上下文菜单中select“属性”。
    3. select“服务”选项卡
    4. 检查“在IIS 5.0隔离模式下运行WWW服务”
    5. 重新启动IIS