小心使用DCOM

简介:

这段时间在做一个编码转换的程序,其中用到了一个SDK,是以DCOM形式发布的。把这个DCOM添加到引用中,用VS2005编写成一个WebService程序,没有多久就成功了,本以为大功告成,可是接下来的麻烦就来了。

在将我的WebService程序发布添加到IIS中去以后,编码就无法完成!同样的代码,在粘贴到Windows程序中写了一个测试代码运行又一切正常。同样的代码WindowsForm中运行正常,在IIS中就无法使用这个问题以前也遇到过,一般是权限的问题。于是把AspNet用户的权限改为管理员权限还是不能运行。这个就麻烦了,知道是权限问题却不知道到底哪儿点权限有问题,郁闷。

打开事件查看器,发现里面有如下的系统错误日志:

DCOM 遇到错误“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。 ”,试图以参数“”启动服务 StiSvc 以运行服务器:
{A1F4E726-8CF1-11D1-BF92-0060081ED811}

这个日志已经告诉我们了,错误就出在DCOM的权限上。原来以WindowsForm或在VS2005中的Web项目运行的时候,调用这个DCOM的是当前操作用户的权限,所以一般也没有问题,但是用IIS调用的时候就涉及到用户 IUSR_××××,IWAM_×××,Network Service 等用户权限,由于这些用户的权限在各个配置中都比较低,所以造成如文件不能写入,DCOM不能调用等错误。

我们这儿的解决办法其实也不复杂,到注册表中搜索提示的{******-*****}这个ID,可以找到这个DCOM的名字,然后运行中输入dcomcnfg打开组件服务,然后找到这个DCOM和相关调用的DCOM,将其权限中添加Network Service,把这个用户权限什么远程启动,远程激活之类的都打开。然后记住一定要重启机器,这样我们就可以在IIS中调用DCOM了。

本文转自深蓝居博客园博客,原文链接:http://www.cnblogs.com/studyzy/archive/2006/09/15/694097.html,如需转载请自行联系原作者


相关文章
|
Java 应用服务中间件 Spring
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
255 0
javax.management.InstanceAlreadyExistsException:com.zaxxer.hikari:name=mallDataSource
|
XML 监控 安全
使用DCOM进行横向移动
使用DCOM进行横向移动
454 0
|
消息中间件 Dubbo Java
jms的全称
jms的全称
209 0
|
Java 应用服务中间件 Shell
|
应用服务中间件 Shell 中间件
|
应用服务中间件 Java 关系型数据库