.NET网站在Web服务器上发布网站以激活Word文档

时间:2018-06-21 11:47:16

标签: c# asp.net office-interop

网站的目标是让用户在输入字段中输入值,这些值用于查找和替换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。

1 个答案:

答案 0 :(得分:0)

Microsoft当前不建议并且不支持从任何无人参与的非交互客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT Services)自动化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。或只是考虑使用为服务器端执行而设计的任何第三方组件。