链接:
一个纠缠了我好久的BUG.
两周前,微软那边的同事给了我一个bug. 唉。苦逼啊,在这边我干的最多的工作就是追踪并修复修bug.
bug和去三月份在上海群硕遇到的问题一样,web项目,本地调试可以良好运行,在IIS上却不行。之前的经验告诉我是权限问题。但是这次代码是 别的同事写的,所以一开始我们都focus在代码上。还是走了弯路。
在尝试未果之后,bug,便被搁置在一旁,一个礼拜吧,没有人再去碰它了,大家都有别的事情去做,所以,这是一个难啃的骨头。不过还是我得去修复。
今天在windows事件日志上,看到了一条错误信息:
并不确定就是我的那个错误,但是仔细看时,却非常像,有权限问题,有COM组件信息,我的那个功能确实是IIS调用COM.所以感觉问题就是在这里。经过查询后,这类信息还是挺多的。
打开注册表后(命令:C:\Windows\regedit.exe),查询APPID:9CA88...找到了相应的注册表信息。
右键权限。
我们需要将图一中提到的用户“NetWork”加进来。首先需要将此注册表可编辑,windows默认注册表的编辑权限为注册表的安装者。点击Advance:
点击change:
将用户修改你当前的登录用户,这样你就可以修改了,回到之前添加用户的界面,将相应的用户加上。将用户system和Administrator的Full Control(完全控制)打上钩,不然第二部将无法编辑。第一步完成。
2.运行 administrative tool 中的 Component Services ,(运行:dcomcnfg)打开之后:点击 my computer:
展开所有的配之后,根据AppID找到对应的配置,右键属性,切换到Security面板,现在开始修改啦。图一中提到,Network Service用户没有Local Activation permission (本地激活权限)。那么来添加:
好啦。对应用户的权限添加好啦。
=========================================
关于IIS应用程序池的用户。IIS应用程序池的进程模型ID:
可以用系统默认的四个account 账户,也可以自己添加。
打开Computer Management,(电脑-管理)
将刚才的用户加进去,这一步是不是必须,没有去考证。
如果所有都搞定了。事件log中的那个error应该不会再有了。