【发布时间】: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