C# 托管时ASP.Net Com互操作Excel生成问题

C# 托管时ASP.Net Com互操作Excel生成问题,c#,asp.net,windows-server-2008,com-interop,C#,Asp.net,Windows Server 2008,Com Interop,在我的ASP.Net应用程序中,我使用MsExcel对象Libby(Com互操作)生成一个Excel文件。该应用程序在VS开发环境中运行良好 但是,当我把它放在服务器上时,我得到了以下错误:如果我不是,没有用户通过远程桌面连接登录到服务器 “检索CLSID为{00024500-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:8000401a由于配置的标识不正确,服务器进程无法启动。请检查用户名和密码。(HRESULT的异常:0x8000401A

在我的ASP.Net应用程序中,我使用MsExcel对象Libby(Com互操作)生成一个Excel文件。该应用程序在VS开发环境中运行良好

但是,当我把它放在服务器上时,我得到了以下错误:如果我不是,没有用户通过远程桌面连接登录到服务器

“检索CLSID为{00024500-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:8000401a由于配置的标识不正确,服务器进程无法启动。请检查用户名和密码。(HRESULT的异常:0x8000401A)。”

我还设置了DCOM配置。奇怪的是,至少有一个用户应该通过RDC连接到服务器。如果是这样,每个人都可以创造卓越。如果不在上面,则抛出错误。应用程序的其余功能工作正常

服务器是Windows server 2008,IIS7。用户通过VPN连接应用程序

有没有人遇到过这样的问题


提前感谢。

Microsoft不建议或不支持在ASP.NET等服务器环境中实现Excel应用程序的服务器端自动化,请参阅。更好地使用(xslx)或(xls)

问题在于为应用程序设置的“标识”缺乏足够的权限。这可能有几个原因,但在讨论这些原因之前,让我们先看看这个标识是在哪里配置的。打开控制面板、管理工具,然后双击组件服务。展开COM+应用程序,右键单击有问题的应用程序,点击属性,然后切换到标识选项卡

一个可能的原因是,在为应用程序设置标识时,您只需选择一个无权访问DLL的用户,或者选择一个无法访问DLL的文件或系统调用的用户

如果将此标识设置为“交互式用户”,则当当前登录到计算机的用户是PAN或根本没有人登录时,可能会发生上述错误。这就是为什么在开发中从未检测到此错误的主要原因。。。开发COM+应用程序并完全控制机器的用户也是作为交互用户登录和运行的用户


您应该确保使用具有足够权限的本地用户帐户(如果DLL需要的话)。因此,使用VPN的用户可能会遇到困难。

MS不支持在服务器上使用Office Interop-请参阅

由于Windows Vista MS引入了一些与安全相关的措施,防止Windows服务(IIS只是其中的一个特例)执行“类似桌面”的操作。。。这意味着您必须绕过几个安全措施(仅模拟无法解决问题!)才能使其正常工作(不推荐!)

请注意,集成VS web服务器不会模拟IIS在权限等方面的行为

要在服务器场景中处理Excel,有几个选项(免费和商业):

我可以推荐和。。。没有尝试,但听到并阅读了很多关于它的好东西


免费选项(尽管仅适用于xlsx格式!)例如和。

感谢@Rofans.Net,根据他提供的要点,我们确定应用程序托管的服务器位于第三方数据中心,没有用户一直登录服务器。只有登录的用户才是RDC用户

因此,我们设法让一个用户以各种方式登录,并将计算机置于锁定状态,以便所有方式都有一个登录用户

这是我们找到的唯一方法,如果有人找到更好的方法,请添加


谢谢。

只需将
身份设置为该用户,并输入具有足够权限的用户的用户名和密码即可。在我的例子中,我输入了一个超级用户组的用户。

我对这个问题进行了研究,我也进行了研究。 我做到了:

我不知道这是一个多么好的解决方案,但它确实有效。:)

在cmd中键入dcomcnfg

转到组件服务->我的电脑->Com安全->启动和 激活权限->编辑默认值->添加

现在添加网络服务并允许对其进行所有许可


最后,我用web服务在计算机上创建了一个管理员用户,然后我设置了这个用户 如下图所示:


成功了。我们不必让电脑锁上

我在尝试读取上传的Excel文件时也遇到了同样的情况。 让我们试试这些步骤。它对我有用

  • 创建本地帐户(设置密码并勾选永不过期)
  • 将步骤1中创建的帐户添加到组IIS\U IUSRS
  • 修改您的web配置 ...
  • 注销服务器并重试

  • 希望对您有所帮助。

    只需在计算机上创建一个具有管理员权限的新用户,并在
    COM服务的
    标识选项卡上分配此用户,如下图所示。它工作得很好


    在DCOMCONFIG中,在启动/执行部分设置了哪个用户?验证凭据是否正确按照@shai的建议进行检查,或者在web.config文件中将网站用户导入windows管理员用户(如果不正确)hurt@Shai:我已在启动和激活权限部分为以下用户设置了所有权限。交互式、IIS用户、管理员、网络服务、系统、,当还使用HPC for Excel时,服务器上支持Everyone.Excel。。。请参阅@GlenLittle如果您仔细检查HPC for Excel,您会发现它没有提供一个API,可以通过互操作完成所有可能的事情。。。因此,它是否可能是一个选项必须根据具体需要仔细检查。HPC提供了一个简单的包装器,但是您可以非常安全地轻松使用整个API!这不是一个有用的答案。许多公司都有运行Office Interop的现有软件,许多公司已经找到了实现这一功能的方法。我们不能都重写所有的东西。易昌