zoukankan      html  css  js  c++  java
  • 小心使用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了。

    【本文章出自博客园深蓝居,转载请注明作者出处,如果您觉得博主的文章对您有很大帮助,欢迎支付宝(studyzy@163.com)对博主进行打赏。】
  • 相关阅读:
    扑克牌顺子
    反转字符串
    左旋转字符串
    和为S的两个数
    C++中substr()详解
    STL库中的equal_range()
    和为S的连续正序列
    数组中只出现一次的数
    二叉树的深度
    mysql找安装路经,更改密码
  • 原文地址:https://www.cnblogs.com/studyzy/p/694097.html
Copyright © 2011-2022 走看看