Cam*_*olf 49 c# vb.net asp.net office-interop
我开发了一个网站,允许用户上传office文档,然后使用office对象模型将文档转换为HTML文件,然后将其显示在iFrame中.
当然,我已经包含对Office.interop.word的引用,并且该站点在我的开发机器上运行良好.当我将其上传到我的生产服务器时,网站运行正常,直到我尝试上传文档.我最初得到一个类似的错误,说"COM对象没有注册".我意识到我的生产服务器上没有安装Word.所以我安装了word,现在当服务器尝试访问word对象模型时,我收到以下错误:
检索COM类工厂CLSID组件{000209FF-0000-0000-C000-000000000046}失败,原因是以下错误:80070005次访问被拒绝.(HRESULT异常:0x80070005(E_ACCESSDENIED))
我在注册表中搜索了相应的CLSID,并找到了相应的文件夹.我说完全控制IUSR_帐户,因为我最终加入完全控制"每个人"错误的持久性,并确保这些权限继承下来到该文件夹的其余部分.然后我添加了对IUSR_的完全控制,并最终再次将"every"添加到我的microsoft office文件夹中.
我不知道授予哪些其他权限以及为了使"访问被拒绝"错误消失的地方. 我一定是在错误的地方给予他们,因为据我知道,我不能有任何比"所有人""完全控制"更宽容.
谁能摆脱任何光明?
小智 59
好的,我通过以下步骤解决了这个问题:
然后Excel,Word和其他应用程序可以工作,祝你好运.
gyo*_*fov 42
这对我有用:
DCOMCNFGmmc comexp.msc /32
,而不是DCOMCNFG在步骤1中,通过建议Darkseal 这里)Jim*_*ood 12
查看安装了Word的服务器计算机上的Windows日志,系统下的事件查看器.您是否看到记录的事件类似于:
机器默认权限设置不会将具有CLSID {148BEE7F-6123-41EE-8CCA-E390902BD0D8}的COM服务器应用程序的本地激活权限授予用户SomeMachine\SomeUser SID(S-1-5-21-483881670-2168941642- 1987552629-1003)来自地址LocalHost(使用LRPC).可以使用组件服务管理工具修改此安全权限.
如果是这样,请运行DCOMCNFG.EXE,然后转到组件服务,计算机,我的电脑(或任何名称),DCOM配置(如果它询问您是否要修复任何内容,则可以回答"否")以及事件日志message是针对应用程序的,然后通过事件日志消息中的名称找到它,此处按项目名称查找,如果事件日志消息是针对CLSID(如上例所示),则通过CLSID"{148B .."找到它. .}"(这只是我粘贴的一个随机CLSID - 可能它会匹配你的000209FF ......上面),并选择更多操作...属性,到安全选项卡.
在这里,您可以选择[x]自定义,然后选择编辑,以添加相应用户帐户的权限,以激活和访问所需的DCOM应用程序或类.
这只是一个猜测,但尝试一下,或者沿着这些方向做某事(即通过DCOMCNFG授予对CLSID的访问权限).
我很难用已接受的答案解决这个问题,因为Microsoft Word 97 - 2003文档记录未在DCOM配置项中列出.我在这篇Technet博客文章中找到了解决方案,他们正确地解释了这个问题:
请务必注意,如果在64位计算机上安装32位Microsoft Office,则可能需要使用32位DCOM配置管理器来查看程序,具体取决于您的操作系统.
在从Windows XP到Windows Server 2008的x64操作系统上,64位版本的DCOMCNFG.EXE无法正确配置32位DCOM应用程序以进行远程激活.此行为导致组件意味着远程激活而不是在本地激活.在Windows 7和Windows Server 2008 R2及更高版本中不会发生此问题.
参考:http://msdn.microsoft.com/en-us/library/windows/desktop/ms678426( v = vs.85) .aspx
并且还建议使用以下命令行命令(而不是DCOMCNFG)作为有效修复:
mmc comexp.msc /32
Run Code Online (Sandbox Code Playgroud)
这会强制加载32位DCOM配置管理器而不是64位DCOM配置管理器,并允许执行接受的答案中描述的步骤.如果这仍然不起作用,文章还解释了许多其他可能的解决方法.
| 归档时间: |
|
| 查看次数: |
67711 次 |
| 最近记录: |