我们正在努力认证我们在Windows Server 2008上部署的应用程序并遇到一些配置问题。
以下代码抛出互操作错误:
On Error Resume Next
Set WordApp = Server.CreateObject("word.application")
If Err.number <>0 Then
SetErrorDesc ErrorDesc, "Unable to instantiate word. (" & err.Description & ")<br>"
SetErrorStatus ErrorStatus,True
End If
err.Description中返回的错误信息是:
006~ASP 0178~Server.CreateObject Access Error~The call to Server.CreateObject failed while checking permissions. Access is denied to this object.
该站点配置为将特定用户帐户用于其应用程序池。该站点是混合模式的ASP.Net和asp-classic应用程序。我已经检查了Ogawa的解决方案,关于systemmprofile需要一个Desktop文件夹,以及AppPool是否配置为加载用户配置文件。 Word 97-2003文档DCOM对象配置为与站点的应用程序池作为相同的用户运行。启动和激活,访问权限和配置权限,用户添加了所有权限设置。
编辑添加: 以交互方式运行时,此脚本(在cscript或wscript下运行)成功创建Word.Application并提取用户名:
var wordobj = new ActiveXObject("Word.Application");
WScript.echo(wordobj.UserName);
wordobj.quit();
显然不是Error creating Word object in classic ASP on IIS7的重复,因为我们在CreateObject for Word.Application上获取错误而不是在打开文档时。
服务器是Windows 2008 x86。
我在配置时错过了什么?
答案 0 :(得分:3)
在我们的MSDN订阅中刻录支持事件后,我们发现了这一点:
在IIS7上,您必须在AppPool和应用程序的匿名身份验证中配置进程标识。如果您正在运行混合ASP和ASP.NET,则可以配置匿名身份验证(在站点的身份验证详细信息中)以指向AppPool的标识,或使用特定的用户名/密码组合。
匿名身份验证的默认值是IUSR,而不是应用程序池标识。
如果有人知道appcmd.exe的正确调用以设置应用程序池标识直通,那么它在评论中会很棒....虽然我们的脚本可以在这里使用相同的用户名/密码组合,但它是最好减少一个存储位置的数量。
答案 1 :(得分:1)
我很长一段时间没有解决服务器端Word自动化问题,但我会对它进行一次尝试。
我们以前查看此问题的原因之一是因为用户配置文件无法加载。它可能是我们不正确的配置,但也许你遇到了同样的问题。
以下是我们如何解决这个问题:
我们实际上是以AppPool用户身份运行服务,以此来保持用户配置文件的打开状态。希望这至少可以消除它是用户个人资料问题的可能性。
答案 2 :(得分:0)
请查看Ogawa回答的以下链接,通过创建文件夹
为我的魅力C:\的Windows \ system32 \设置\ systemprofile \桌面
答案 3 :(得分:-1)
尝试查找已在本地计算机或服务器上设置的用户。显然IUSR_UNKNOWN没有“我的文档”文件夹,微软也没有让这个奇怪的人通过注册表当前用户会话访问你的Word文档。好运,试图说服微软允许这个人进入。
而是创建新用户或域用户,并为其提供本地管理员访问权限(用于管理目的)或普通用户帐户以供正常使用。并在他的本地计算机或服务器上设置一个帐户。瓦拉。没有更多的愚蠢。