这个问题困扰了我很久,所以一直不敢采用asp+com的方式来编写程序,因为可怕的"权限被拒绝"在VB里面随时会出现,一旦出现就表示很难完成任何组件的调试.一般都会采用重新启动服务器的方式来调试COM组件,以前很多人说了很多办法,但是让人都很迷惑,而且在实际的工作中,对于我们这些人来说,基本上都解决不了,而且说的很笼统,经过我几天的摸索和实验,总结出一个非常好的解决办法如下:
1.首先 将IWAM_ServerName 这个用户帐号的权限赋予管理员权限,使之有从内存中彻底清楚DLL缓存的能力2.在编写COM组件的一开始(第一次编译成DLL前),请net stop w3svc 停止www 服务(注意,在编译前一定要先停止WWW服务),直到你生成DLL,然后再net start w3svc
  
3.使用asp调用,然后再修改COM组件,编译的时候出现"权限被拒绝",这时候请在组件服务里,选择关闭
iis-out-of-process pooled applications 然后编译DLL,发现编译通过,以后就不用在关闭WWW服务了,只要每次关闭iis-out-of-process pooled applications 即可调试组件,非常的方便
   如果有什么问题,欢迎讨论 msn:[email protected]因为项目急,只能不停的想办法了。同样的办法也可以解决DELPHI 编写COM组件的毛病.谢谢

解决方案 »

  1.   

    楼主的方法,偶可不敢支持,特别是IWAM_ServerName 赋予管理员权限,这一点……似乎COM组件的编译和调试没那么麻烦吧?!
      

  2.   

    偶们的报表当中就是采用ASP调用COM+组件的方式来完成工作的,若依楼主的方法去编译调试,那么偶们四千多支报表的组件要多花费多少时间来编译和调试?更多的时间里,还是数据的问题,那么要是在客户那里也需要如此调试,客户的可是服务器,那不得让他们整个企业罢工?建议的方式还是调试环境模拟运行环境比较合适。否则一旦出了问题,那个调试工作再依楼主的方法去做,那么老板发工资都会发愁。
      

  3.   

    我也有类似的问题,就是我用vb写了一个dll,生成为com+应用程序,可是我在另一台客户端上访问com+时,客户端的操作系统登录用户必须和com+所在的服务端的操作系统用户和密码完全一样(服务端和客户端都是同一个工作组内),请问如何解决?
      

  4.   

    对不起,偶让大家失望了,根据工作经验发现.什么都不用更改,直接在 组件管理器,停止IIS-out-of-process...就可以了。哈哈.原来是VISUAL interdev捣鬼,如果用这个写asp,VB写COM,你不关掉INTERDEV 总是提示权限被拒绝