C# Excel互操作在用户注销时不起作用

C# Excel互操作在用户注销时不起作用,c#,silverlight,office-interop,excel-interop,dcom,C#,Silverlight,Office Interop,Excel Interop,Dcom,我有一个奇怪的问题,我有一个silverlight应用程序,它使用互操作来执行一段代码 我的生产服务器有一个复杂的登录过程,用户的密码在规定的时间后不会保持不变。i、 e密码不断变化 因此,当我运行这个应用程序时,在任何用户登录到该应用程序之前,只要该用户注销或会话过期,interop就会停止工作,因为它没有交互用户 我在几篇文章中读过这个问题,大多数人要求在DCOMCNFG设置中配置身份。但我找不到任何microsoft office组件powerpoint、onenote、word、exce

我有一个奇怪的问题,我有一个silverlight应用程序,它使用互操作来执行一段代码

我的生产服务器有一个复杂的登录过程,用户的密码在规定的时间后不会保持不变。i、 e密码不断变化

因此,当我运行这个应用程序时,在任何用户登录到该应用程序之前,只要该用户注销或会话过期,interop就会停止工作,因为它没有交互用户

我在几篇文章中读过这个问题,大多数人要求在DCOMCNFG设置中配置身份。但我找不到任何microsoft office组件powerpoint、onenote、word、excel。。。在我的DCOMCNFG中,但在我的本地,我能够找到它。此外,未找到互操作。错误引用的是此CLSID{00024500-0000-0000-C000-0000000000 46}

我怎样才能解决这个问题。Office安装是否有任何问题,以便文件显示在我的DCOMCNFG中

即使它真的出现了,是否还有一线希望,通过它我可以解决身份问题?由于生产服务器的密码不断更改,因此即使我转到dcom组件并转到“属性”中的“标识”选项卡,我是否能够为该用户提供固定的名称和密码?或者我应该使用启动用户还是交互式用户

如果您有任何帮助,我们将不胜感激。

Microsoft目前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在这种环境下运行Office时,Office可能会表现出不稳定的行为和/或死锁

如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用安全的组件来无人值守地执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果使用服务器端解决方案中的Office应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将面临整体解决方案稳定性方面的风险


你可以在这篇文章中了解更多

我同意你的观点,但我已经使用OpenXML编写了95%的代码,只有5%使用interop。由于无法使用openxml强制重新计算宏和公式,因此有必要使用互操作。因此,我使用interop打开并保存表单,然后触发公式的重新计算。对于此场景的任何输入,我建议按照前面提到的文章的建议,在服务器端使用任何第三方组件。例如,您可能会发现Aspose组件很有用。我不能使用任何第三方工具,也不能将其移动到客户端。因为客户端可能安装了office,也可能没有安装interop。应用程序的目的只是在excel中输入值,使用excel中的公式计算输出并返回输出。对于这种情况,有什么建议的解决方法吗??使用OpenXML不会进行重新计算,因此,我只使用InterOp打开和重新计算公式。另外,您是否可以让我知道哪些组件对于无人值守的执行是安全的:我已经建议使用第三方组件。没有别的办法。