在IIS7上的ASP-Classic中创建Word.Application时出错

问题描述:

我们正在努力验证我们的应用程序是否在Windows Server 2008上部署,并且存在一些配置问题。在IIS7上的ASP-Classic中创建Word.Application时出错

下面的代码引发互操作错误:

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的解决方案,需要systemprofile有一个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

您确认一个简单的交互.VBS从同一账户在同一台​​机器上运行,可以创建对象? – AnthonyWJones 2012-01-24 13:39:48

+1

@AnthonyWJones是的,交互式场景工作正常。 (使用jscript,但原理是一样的,请参阅编辑 – 2012-01-24 14:34:43

+0

在这篇文章中有一些关于服务器安全权限的讨论可能会有所帮助(向下翻页)http://forums.devx.com/showthread.php?t = 12914 – Dee 2012-01-21 19:57:52

燃烧后支持事件从我们的MSDN订阅,这是我们发现:

在IIS7,你必须在两个程序池和应用程序的匿名身份验证配置进程标识。如果您运行混合的ASP和ASP.NET,则可以配置匿名身份验证(在站点的身份验证详细信息中)以指向AppPool的身份,或使用特定的用户名/密码组合。

匿名身份验证默认是IUSR,而不是应用程序池标识。

如果有人知道正确调用appcmd.exe来设置应用程序池身份传递,那么在评论中会很棒......尽管我们的脚本可以在这里简单地使用相同的用户名/密码组合, d最好减少一个存储地点的数量。

+0

哇,我知道这是一个坏主意,从ASP.NET调用Office应用程序,因为他们认为他们是在一个桌面环境中运行。我不知道它是在一个传统的ASP应用程序确定。 – 2012-09-15 01:09:02

+1

我不会将其称为“OK”,它会做一些必要的事情,并且没有一个好的故事可以让我们在这里工作的应用程序以另一种方式进行操作。 – 2012-09-16 04:02:22

+1

当然可以启动一个交互式进程并让它运行Office应用程序。然后通过WCF与该进程进行通信。 WCF客户端可以封装在一个COM可见封装器中,用于ASP应用程序。 – 2012-09-16 06:10:10

我很长时间没有对服务器端的Word自动化问题进行故障排除,但我会采取一个措施。

我们以前看到这个问题的原因之一是因为用户配置文件不会加载。这可能是我们不恰当的配置,但也许你遇到了同样的问题。

下面是我们如何工作围绕它:

  1. 确保用户配置文件通过登录到IIS服务器为用户的应用程序池用户存在。
  2. 创建并安装不执行任何操作的Windows服务。或者您可以使用不具任何用途的现有服务(传真)。
  3. 将服务配置为与AppPool相同的用户“登录为:”。
  4. 将“启动类型”设置为自动。
  5. 确保它正在运行。

我们基本上是以AppPool用户的身份运行一项服务,作为保持用户配置文件打开的一种方式。希望这可以至少消除它是用户配置文件问题的可能性。

请检查小川,这工作就像一个魅力对我来说通过创建文件夹

回答下面的链接C:\ WINDOWS \ system32 \设置\ systemprofile \桌面

http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required

只是试图找到已建立本地计算机或服务器上的用户。很明显,IUSR_UNKNOWN没有“我的文档”文件夹,Microsoft并没有通过注册管理机构当前用户会话给这个陌生人访问您的Word文档。所以祝你好运,试图说服微软,这个人被允许访问。

而是创建一个新用户或域用户,并给它的本地管理员权限(为管理目的)或普通用户帐户的正常使用。并在您的本地计算机或服务器上设置一个帐户。瓦拉。没有更多的愚蠢。

+0

用于提示管理权限用户是解决此问题的可接受组件的Downvote。 – 2013-01-31 22:08:46