【问题标题】:Application hangs forever when opening a Visio document打开 Visio 文档时应用程序永远挂起
【发布时间】:2021-09-29 07:12:36
【问题描述】:

这是我的一小段代码。

protected void ViewVisio(string url)
{
    // open document
    Microsoft.Office.Interop.Visio.Application visApp = 
        new Microsoft.Office.Interop.Visio.Application();
    Microsoft.Office.Interop.Visio.Document visDoc =    // application hangs here
        visApp.Documents.Open(url);

    ...
}

基本上,应用程序只是永远挂在打开文档的那一行。它永远不会超时,即使在几个小时之后,它也不会抛出异常。我检查了 Windows 事件日志,那里什么都没有。

我的服务器上安装了具有所有正确权限的 Office。我对 Word、Excel 和 PowerPoint 文件做同样的事情,它们都工作得很好,所以我认为这与它没有任何关系。

所以我在这里有点不知所措 - 有人知道问题可能是什么吗?

【问题讨论】:

  • 您要打开的文档位于何处..?您能否重构该代码并将您的代码包装在 try{} catch{} 中。..
  • 初学者试试这个链接我想知道你是否有路径问题..msdn.microsoft.com/en-us/library/cc160753.aspx
  • 如果您在 Windows 任务管理器中查看,Visio 进程是否启动?
  • 请仔细阅读KB257757。我假设您通过在 ASP.NET 开发服务器(又名玩具服务器)上运行 ASP.NET 应用程序来获得 Word、Excel、PowerPoint 的工作。如果您在 IIS 上运行您的应用程序,那么我认为它们都不能如您所愿。

标签: c# asp.net office-interop visio


【解决方案1】:

切勿在自动化环境下运行 Microsoft Office。 Microsoft 不推荐或不支持此操作(请参阅 KB257757 here)。

Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时出现的行为和/或死锁。

【讨论】:

  • 从“不推荐或不支持”到“从不”相差甚远。商业世界的第一条规则是,您的要求可能会要求您做一些困难的事情,并且您最好弄清楚如何去做。我已经为 Word 和 Powerpoint 编写了类似这样的基于服务器的转换,并且在一些保姆下它们工作得很好。 (每周登录一次并杀死任何流氓进程)
  • @GalacticCowboy:我不同意。虽然完全有可能,但最好在这里信任微软,因为他们在得出这个结论之前已经投入了大量资源。它不是临时制作的。
  • @GalacticCowboy,事实是当微软说它不支持(推荐)时,你永远不应该。例如,如果您打开一个支持案例并就服务器端 Office 自动化咨询 Microsoft,该案例可能会被直接拒绝。除了 KB257757 之外,您不会从 Microsoft 获得任何信息。
猜你喜欢
  • 1970-01-01
  • 2020-05-06
  • 2014-08-22
  • 2012-03-06
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多