我有一个网站,可以在用户的浏览器上打开Word文档,并在文档中填写一定的值:
protected void Page_Load(object sender, EventArgs e)
{
string source = "c:\TemplateDocument.doc";
string destination = "c:\Temp.doc";
File.Copy(source, destination, true);
Microsoft.Office.Interop.Word._Application oWord;
Microsoft.Office.Interop.Word._Document oDoc;
oWord = new Microsoft.Office.Interop.Word.Application();
oDoc = oWord.Document.Open(destination, ReadOnly: false, Visible: false);
oDoc.Tables[1].Rows[1].Cells[1].Range.Text = "Hello world"; // Simplified for the example
oDoc.SaveAs2(destination);
oDoc.Close();
Response.Clear();
Response.ContentType = "application/msword";
Response.AddHeader("Content-Disposition", "inline;TemplateDocument.doc");
Response.WriteFile(destination);
Response.End();
File.Delete(destination);
}
上面的代码在我们的旧服务器上完美运行,该服务器是IIS6。
但是,我们将服务器升级到IIS7,并使其与DFS一起使用。
(DFS - 基本上是两个复制服务器)
现在发生的事情是oDoc
仍然为空,即使在Open()
命令之后也是如此。
当我尝试访问oDoc
内的任何内容时(例如oDoc.Tables
),我得到NullReferenceException
。
在服务器上运行代码本地时,它可以正常工作;一旦它发布,我就会得到例外。
还有什么可能相关?代码是指Office 2010的dll,它是安装在服务器上的Office(在升级之前也是如此,所以我认为不是导致问题的原因。)
提前致谢!