• 小心使用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)对博主进行打赏。】
  • 相关阅读:
    异步刷新前后台的代码
    AngularJS 涉及到checkbox时候初始化值为on 的问题解决方案
    百度编辑器初始化的时候禁用
    修正点击事件的js
    js 四舍五入函数
    How to: Change icon in Inno Setup
    How to: Signing Installers You Create with Inno Setup
    Pascal Language: Recommended Materials
    How to: Reading an ini config file from a batch file
    "const wchar_t is incompatible with parameter of type "LPCSTR"
  • 原文地址:https://www.cnblogs.com/studyzy/p/694097.html
Copyright © 2020-2023  润新知