gpt4 book ai didi

asp.net - Documents.Add 在 ASP.NET (VB.NET) 上失败

转载 作者:行者123 更新时间:2023-12-01 13:01:54 25 4
gpt4 key购买 nike

我在使用来自 ASP.NET MVC 的 Microsoft Word 打开文档时遇到问题.

这在我的开发机器上完美运行,但部署到 IIS 时却不行.

Dim word = New Microsoft.Office.Interop.Word.Application

'This line is failing to return a document object
Dim letter = word.Documents.Add(letter_doc_path)

'This line then fails due to [letter] being null
letter.MailMerge.OpenDataSource(csvPath)

我已经在“组件服务”(dcomcnfg) 中向 NETWORK SERVICE 用户添加了权限,这首先允许创建 Word 对象,但我完全不知道如何处理这个对象。

为了以防万一

word.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone

没有错误(显然除了空对象引用之外)对问题没有帮助 - 也许有一种方法可以查询 Word 以获取特定的错误消息?

最佳答案

Word 在打开任何文档时都需要 normal.dot 模板文件,问题的发生是因为 IIS 用户没有任何地方可以创建 normal.dot,所以它在后台失败。

这是通过为新创建的单词实例设置 UserTemplate 路径 解决的(在创建它之后立即)。

路径必须是 IIS 用户可写的(在我的例子中是 NETWORK SERVICE)。

word.Options.DefaultFilePath(Microsoft.Office.Interop.Word.WdDefaultFilePath.wdUserTemplatesPath) = working_folder

为了完整起见,这里是包含获胜行的原始示例:

Dim word = New Microsoft.Office.Interop.Word.Application

'this line fixed it
word.Options.DefaultFilePath(Microsoft.Office.Interop.Word.WdDefaultFilePath.wdUserTemplatesPath) = working_folder

Dim letter = word.Documents.Add(letter_doc_path)

关于asp.net - Documents.Add 在 ASP.NET (VB.NET) 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com