C# Interop.Word文档.Open为空
我正在尝试使用Interop.Word.Application打开.docx文件并转换为PDF。它可以作为控制台应用程序使用,但是如果我在我的web应用程序中使用同样的控制台应用程序,它就不起作用了。我试图查看该文件夹的权限。我提供了完全控制的“网络服务”,但仍然没有在word.Documents.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
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
选项卡
标识
,从启动用户
更改为交互式用户
尝试此操作,它可能会对您有所帮助
- 在“C:\Windows\SysWOW64\config\systemprofile”中创建一个新的“桌面”目录
如果这对你有帮助,请让它回答要解决这个问题,我必须做两件事:
- 创建目录:
C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows\INetCac他
C:\Windows\System32\config\systemprofile\Desktop
- 启用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元素更改为使用特定用户而不是启动/交互用户登录
- 更改了服务,使其以相同的特定用户身份启动
由于一次大型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!我花了一个星期才找到这个帖子!这为指定用户的自动化提供了帮助。这是一个巨大的帮助。谢谢虽然这在理论上可以回答问题,但在此处包含答案的基本部分,并提供链接供参考。此路径上已存在一个名为“桌面”的文件夹,但它不起作用。为我工作。谢谢