【问题标题】:.NET Website Publish Website on Web Server Activating Word Documents.NET 网站 在 Web 服务器上发布网站 激活 Word 文档
【发布时间】:2018-06-22 05:47:21
【问题描述】:

该网站的目的是让用户在输入字段中输入值,这些值用于查找和替换 Word 文档中的文本。

这在我的机器上本地工作,替换word文档并将它们保存在正确的路径中。

我尝试使用文件系统将网站发布到 Web 服务器上的某个位置。我在 IIS 管理器上创建了一个新站点,目前工作正常,网站页面加载。当我点击一个按钮生成word文档时,我得到以下错误:

[NullReferenceException: 对象引用未设置为 对象。] src_PoA.OpenWordFile(String doc) +658
src_PoA.Submit_Click(Object sender, EventArgs e) +569
System.Web.UI.HtmlControls.HtmlButton.OnServerClick(EventArgs e) +133 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) +1664

尝试定义 word 应用程序、word 文档并尝试激活 word 文档时似乎失败了。我尝试通过在 Web 服务器上使用 Visual Studio 打开 IIS 网站来调试它,但是我一直无法在 Web 服务器上开始调试。:

 private void OpenWordFile(string doc)
    {
        string caseno = casetextboxinput.Value;
        string nameno = nametextbox.Value;
        object fileName = Path.Combine(System.Windows.Forms.Application.StartupPath, doc);
        Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application { Visible = true };
        Microsoft.Office.Interop.Word.Document aDoc = wordApp.Documents.Open(doc, ReadOnly: false, Visible: true);
        aDoc.Activate();
}

我在 Visual Studio 中使用 UNC 路径,这似乎可以在本地找到路径,但我不知道它是否真的能够访问/读取和将文件写回这个位置,这可能是另一个它也要去的地方错了。

private static string directoryroot = @"\\testserver05\c$\inetpub\wwwroot\PoA\PoA Testing"; 

我已经在 Web 服务器上安装了 .NET 4.5 和捆绑包 4.0、3 和 2。还安装了microsoft word。

【问题讨论】:

  • 使用像这样的办公自动化是不支持 ASP.Net 并且强烈不推荐使用类似 OpenXML 的东西。我看不到 System.Windows.Forms.Application.StartupPath 在 ASP.Net 中工作
  • 我将如何使用 OpenXML - 我需要更改我的整个代码以删除 Microsoft.Office.Interop.Word.Application 吗?我需要能够在特定路径中打开 word 文档,查找和替换文本,保存文档,然后打开另一个 word 文档和相同的过程。保存所有文档后,我需要合并文档并转换为 pdf。
  • 是的,如果您使用@roa765 建议,您将需要更改您的代码并且不要使用 Word Interops。另一种选择是使用像 Aspose (products.aspose.com/words) 这样的文档 API,它允许您与 doc 或 docx 文件进行交互,无需互操作,也无需在服务器上安装 word。

标签: c# asp.net office-interop


【解决方案1】:

Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时出现的行为和/或死锁。

如果您要构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用来自服务器端解决方案的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。在Considerations for server-side Automation of Office 文章中阅读更多相关信息。

作为一种解决方法,您可以考虑使用 Open XML SDK,请参阅Welcome to the Open XML SDK 2.5 for Office 了解更多信息。或者只是考虑使用为服务器端执行而设计的任何第三方组件。

【讨论】:

  • 我已将我的代码转换为使用 Open XML。如果我想将 word 文档转换为 PDF - 最好的方法是什么?我需要确保它在发布到 Web 服务器时有效。
  • @roa765 您应该将此作为一个新问题发布,但最好先对其进行研究。我想有一些工具可以直接转换文件格式,但请注意,关于工具/库的问题在 Stack Overflow 中是题外话。也可以使用 Word Automation Services (google that) 进行转换,但它假定使用本地 SharePoint 服务器。
猜你喜欢
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多