2013-03-13 65 views
4

的Windows Server 2003 - IIS 6.0OpenOffice的uno.util.Bootstrap.bootstrap()挂起,并且不会返回

我有一个Asp.Net 4.0(C#)的网络使用OpenOffice的转换Microsoft Office文档转换成PDF的应用所以他们可以在网上显示。

一切工作正常。

然后,我将OpenOffice从3.2.1升级到了3.4.1的Web服务器,现在它无法工作。 引导调用发生问题。

private static XComponentLoader LoadOO() 
{ 
    XComponentContext OO = uno.util.Bootstrap.bootstrap(); // this will either start OOo or Find one that's running. (The code hangs here) 
    XMultiServiceFactory oServMan = (XMultiServiceFactory)OO.getServiceManager(); // Get Service Manager 
    XComponentLoader aLoader = (XComponentLoader)oServMan.createInstance("com.sun.star.frame.Desktop"); // Get a CompontLoader 
    return aLoader; 
} 

uno.util.Bootstrap.bootstrap();挂起并不返回任何东西。

该调用在网络服务用户名下启动OpenOffice,但该调用永不返回。每次调用该方法时,都会打开另一个OpenOffice实例,而不是附加到已打开的实例。

我试过再次降级到3.2.1,但同样的事情发生。

我试过解决方案3概述here没有成功。

我试过重新启动IIS和回收应用程序池和各种事情必须做用户权限。我没有得到任何地方,需要一些帮助。

我不是那个最初在网络服务器上工作的人,所以不知道是否采取了特殊措施。使用OpenOffice的任一版本在开发机器上运行我都没有问题。

+0

你解决了这个问题吗?我有同样的错误。如果我解决它会发布。 – 2013-08-05 02:05:33

+0

你有没有设法解决这个问题?我遇到了同样的问题。它的工作原理我在dev上表达,但只是在等待这个调用和崩溃iis – ppumkin 2014-02-01 19:27:16

+1

我改变myu APP池到我登录的实际用户。有用。 – ppumkin 2014-02-08 08:57:32

回答

2

我知道使用LocalSystem作为应用程序池标识可以解决问题。

我知道这并不理想,在您的情况下甚至可能不允许。因此,您还可以尝试修改ASPNET用户或自定义本地或域用户的本地策略。当然,用户需要对ooo可执行文件夹有读/执行权限,也许是temp。

在Vista/Server 2008及以上版本中,如果不是本地管理员或本地系统,就无法使其工作。我认为它与对PROCESS_QUERY_INFORMATION权限的更改有关,因为“.Bootstrap()”调用正在附加到刚刚创建的OO进程。你可以试试下面的,如果你正在运行较早:

运行secpol.msc或者管理工具/本地安全策略, 在本地策略/用户权限分配:

  • 找到“拒绝本地登录”和“拒绝通过终端登录”(如果有 ,可能会有所不同)
  • 如果存在ASPNET或{你的用户}用户,请从此列表中删除。
  • 然后找到“允许本地登录”并将您的用户添加到此列表中。

http://support.microsoft.com/default.aspx?scid=kb;en-us;317012 http://support.microsoft.com/kb/555134

应用程序池也必须支持32位,但我相信,如果你得到这个地步,你已经拥有了一套。

+0

不适合我! – 2017-05-21 12:03:36

相关问题