Office Interop与ASP.NET中的64位Windows

时间:2009-06-23 09:26:30

标签: asp.net 64-bit office-interop

我正在尝试在运行Windows 2003 64位的服务器上使用C#ASP.NET进行Office 2003互操作(虽然我在32位模式下运行IIS)并收到错误消息,如:

计算机默认权限设置不授予具有CLSID的COM Server应用程序的本地激活权限 {00024500-0000-0000-C000-000000000046}到用户域\用户名SID(S-X-X-XX-XXX-XXXX-XXX-XXXXX)。可以使用组件服务管理工具修改此安全权限。

有人知道我需要改变什么才能让它发挥作用吗?谢谢,如果你能提供帮助。

编辑 - 这在32位服务器上运行良好。

编辑2 - 似乎没有人喜欢这个,但我不确定是否有任何其他方式可以满足我们的要求。如果你能想到一个,我又打开了另一个问题alternative-to-office-interop-for-document-generation

5 个答案:

答案 0 :(得分:2)

从服务器环境调用时,所有Office应用程序都无法正常工作。它们的COM接口用于桌面自动化,而不是服务器应用程序的自动化。你试图让它们发挥作用的任何事情都会涉及黑客攻击下的黑客攻击,注定要失败。

除此之外,您无权从服务器应用程序运行它们。


更正:知识库文章Considerations for server-side Automation of Office确实表示您已获得Office产品的服务器端自动化许可,仅在客户端获得许可后才能使用:

除了技术问题,您还必须考虑许可问题。当前的许可指南阻止Office应用程序在服务器上用于服务客户端请求,除非这些客户端本身具有Office的许可副本。使用服务器端自动化为未经许可的工作站提供Office功能不受最终用户许可协议(EULA)的约束。

另一方面,知识库文章列出了许多从不这样做的理由。它们包括:

  • 用户身份
  • 与桌面交互
  • 可重入性和可扩展性
  • 弹性和稳定性
  • 服务器端安全性

我向任何考虑使用Office产品的服务器端自动化的人推荐这篇知识库文章。

答案 1 :(得分:1)

就像John Saunders所说,除了你的许可问题之外,你不会让Office自动化在服务器端正常工作。

查看OpenXML SDK,您可以利用它来实现相同的最终结果。 DocumentReflector特别会帮助你解决这个问题。

http://blogs.msdn.com/alspeirs/archive/2008/12/09/generating-documents-with-c-open-xml-and-the-document-reflector.aspx

http://www.microsoft.com/downloads/details.aspx?FamilyID=c6e744e5-36e9-45f5-8d8c-331df206e0d0&DisplayLang=en

答案 2 :(得分:0)

尝试在更多特权身份下运行AppPool(右键单击AppPool并选择“身份”选项卡)。

答案 3 :(得分:0)

我找到了答案。在regedit中搜索问题guid。然后,您将看到一个包含两个值的键 - 组件的名称和组件服务中的guid。

答案 4 :(得分:0)

正如其他人所提到的,Microsoft不支持在服务器环境中使用COM Interop。

话虽如此,你没有说明你是在谈论ASP.NET,WinForms,控制台应用程序还是???。您可能会发现,如果您构建控制台应用程序并将Visual Studio配置管理器中的目标CPU设置为x86而不是任何CPU,它将会起作用。这将强制您的应用程序在64位服务器上以32位模式运行。当然,您可能遇到许多其他问题,例如权限问题。

在W2K3 64位和W2K8 64位环境中测试并支持

SpreadsheetGear for .NET

免责声明:我拥有SpreadsheetGear LLC