OpenOffice unix .util. bootstrap .bootstrap()挂起且不返回
本文关键字:bootstrap 返回 挂起 unix util OpenOffice | 更新日期: 2023-09-27 18:03:47
Windows Server 2003 - IIS 6.0
我有一个Asp。Net 4.0 (c#) web应用程序,使用OpenOffice将microsoft office文档转换为pdf,以便在web上显示。
一切正常
然后我在web服务器上将OpenOffice从3.2.1升级到3.4.1,现在它不工作了。问题发生在引导调用上。
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,但没有成功。
我已经尝试重新启动IIS和回收应用程序池和与用户权限有关的各种事情。我哪儿也去不了,需要一些帮助。
我不是最初在web服务器上工作的人,所以不知道是否采取了任何特殊步骤。在我的开发机器上使用OpenOffice的任何一个版本都没有问题。
我知道使用LocalSystem作为您的应用程序池标识将解决这个问题。
我知道这是不理想的,甚至在你的情况下可能是不允许的。因此,您还可以尝试修改asp.net用户或自定义本地或域用户的本地策略。当然,用户需要对ooo可执行文件夹的读/执行权限,也可能需要temp。在Vista/Server 2008及以上版本上,如果没有本地管理员或本地系统,我无法让它工作。我认为这与PROCESS_QUERY_INFORMATION权限的更改有关,因为"。bootstrap()"调用希望附加到您刚刚创建的OO进程。如果您运行的是旧版本,可以尝试以下操作:
secpol运行。msc或管理工具/本地安全策略在本地策略/用户权限分配:
- 查找"禁止本地登录"answers"禁止通过终端登录"(如果)
- 删除此列表中存在的asp.net或{您的用户}用户。
- 然后找到"允许本地登录"并将您的用户添加到此列表。
http://support.microsoft.com/default.aspx?scid=kb; en - us; 317012年http://support.microsoft.com/kb/555134
应用程序池也必须是32位启用的,但我相信如果你已经得到了这个设置。