WebAPP,API调用Excel, Word,Bartender等DCOM, VS调试没问题,发布到IIS出错,类似如下
"Message": "An error has occurred.",
"ExceptionMessage": "Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).",
"ExceptionType": "System.UnauthorizedAccessException",
网上查了很多资料,也尝试了很多方法,原因应该是IIS调用DCOM用的用户名的权限问题,VS调试用的是本机系统账户,而IIS用的是Applicaiton Pool定义的账户,如果此账户没有相应启动DCOM的权限,那么就会出现Access 错误。
最后简单的解决方法,将Applicaiton Pool的Identity改正LocalSystem,然后在DCOMCNFG.exe的组件服务里将Excel或其他DCOM的应用的Identity改成interactive user,最然说这个设置会造成安全方面的问题,当时如果是内部用的话问题也不大。
当然也可以将其他账户配置成相应权限,道理上应该可以,当时尝试多次都不行,有时间再看看如下链接吧
http://www.cnblogs.com/zhongxinWang/p/3275154.html
http://bbs.csdn.net/topics/360144511
http://blog.csdn.net/aiya1229/article/details/7031727
https://forums.asp.net/t/1951549.aspx
https://stackoverflow.com/questions/17785063/retrieving-the-com-class-factory-for-component-error-80070005-access-is-de
还有,有些DCOM是32位的,在64位系统用DCOMCNFG组件里有可能看不到,需要用命令,MMC -32打开控制台,添加snap in,组件服务,应该可以看到。