Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Interop.Word文档.Open为空_C#_Asp.net_Ms Word_Asp.net 4.0_Openxml - Fatal编程技术网

C# Interop.Word文档.Open为空

C# Interop.Word文档.Open为空,c#,asp.net,ms-word,asp.net-4.0,openxml,C#,Asp.net,Ms Word,Asp.net 4.0,Openxml,我正在尝试使用Interop.Word.Application打开.docx文件并转换为PDF。它可以作为控制台应用程序使用,但是如果我在我的web应用程序中使用同样的控制台应用程序,它就不起作用了。我试图查看该文件夹的权限。我提供了完全控制的“网络服务”,但仍然没有在word.Documents.Open上设置对象引用。你能告诉我有什么问题吗?我被这个错误缠住了。请让我知道。我感谢你的建议。多谢各位 Microsoft.Office.Interop.Word.Application w

我正在尝试使用Interop.Word.Application打开.docx文件并转换为PDF。它可以作为控制台应用程序使用,但是如果我在我的web应用程序中使用同样的控制台应用程序,它就不起作用了。我试图查看该文件夹的权限。我提供了完全控制的“网络服务”,但仍然没有在word.Documents.Open上设置对象引用。你能告诉我有什么问题吗?我被这个错误缠住了。请让我知道。我感谢你的建议。多谢各位

    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();

    object oMissing = System.Reflection.Missing.Value;

    word.Visible = false;
    word.ScreenUpdating = false;
    string fileName = @"c:\OUTPUT\test.docx");
    Document doc = word.Documents.Open(filename, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing);
        doc.Activate();

正如Paulie在他对OP的评论中所说的,我认为这个问题主要是因为Web服务器上的库。你也许可以通过黑客攻击在web应用程序上实现这一点,但我建议不要这样做

编辑:唉,我误读了这篇文章,以为是Excel。根据我的经验,大多数人在使用Office.Interop时都会这么想;)

有一个使用DocX格式()的开放库。不幸的是,他在页面上承认,没有Office.Interop库()


是一个“有希望的”选择,但YMMV。

很可能您的web服务器上有一个不同的word dll,可能是一个旧的。我建议您引用一个特定的dll并将其复制到web服务器,这样您就可以确保您使用的是测试代码时使用的同一个单词dll,并且您知道它是有效的。
使用interop时可能会出现一些问题,但是,word interop是唯一可以确保最正确地转换word文件的工具。

如果您仍在寻找答案,我刚才为我的项目找到了答案

打开DCOM配置设置:

  • 开始->
    dcomcnfg.exe
  • 计算机
  • 本地计算机
  • 配置DCOM
  • 搜索Microsoft Word 97-2003文档的属性

  • 选项卡
    标识
    ,从
    启动用户
    更改为
    交互式用户

    尝试此操作,它可能会对您有所帮助

    • 在“C:\Windows\SysWOW64\config\systemprofile”中创建一个新的“桌面”目录
    我花了一天的时间寻找解决方案,这对我来说很有效

    这可能是一个外形问题。

    这对我来说很有效。


    如果这对你有帮助,请让它回答

    要解决这个问题,我必须做两件事:

    • 创建目录:

      • C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows\INetCac‌他
      • C:\Windows\System32\config\systemprofile\Desktop
    • 启用DCOM设置

    如果由于语言不同而难以找到DCOM条目,可以执行以下操作:

  • 开始菜单>
    regedit
  • 导航至
    HKEY\U LOCAL\U MACHINE\SOFTWARE\Classes\AppID\{00020906-0000-0000-C000-0000000000 46}
  • 右键单击>新建>字符串值

    • 对于键,输入
      RunAs
    • 对于值,输入交互式用户

  • 您可以对AppID上的Excel执行相同的操作
    {00020812-0000-0000-C000-0000000000 46}

    我执行了以下步骤,它工作正常:

    • 创建
    • 将DCOM元素更改为使用特定用户而不是启动/交互用户登录
    • 更改了服务,使其以相同的特定用户身份启动
    在2019-09-29编辑。
    由于一次大型windows更新,我不得不重新执行确切的进度。

    抱歉,我无法准确地帮助您,但我强烈建议不要在web应用程序中使用Office Interop,MS建议不要使用Office Interop,据我所知,Office未经许可在web服务器上使用。抱歉,如果这与您无关,有很多第三方组件可以为您执行此操作,但我从未使用过开源组件。事件日志中有任何内容吗?代码中有错误。字符串文件名=@“c:\OUTPUT\test.docx”);事件日志中没有任何内容。创建桌面文件夹对我有帮助:EPPlus是一个excel库。这将如何帮助他将word文档转换为PDF。现在,编辑一些实际有用的信息。Sadface@dv请注意,在Windows 64位操作系统上,必须以32位模式MMC-32启动MMC,然后添加组件服务。否则,您只能看到64位组件。使用Schprit查看此解决方案有效,是的,但仅当用户始终登录到服务器时。From中写道:“交互式用户:应用程序将使用当前登录到计算机上的用户的安全上下文运行。如果选中此选项且用户未登录,则应用程序将不会启动。”哇,你是超级明星Gianni!我花了一个星期才找到这个帖子!这为指定用户的自动化提供了帮助。这是一个巨大的帮助。谢谢虽然这在理论上可以回答问题,但在此处包含答案的基本部分,并提供链接供参考。此路径上已存在一个名为“桌面”的文件夹,但它不起作用。为我工作。谢谢