.NET 网站 在 Web 服务器上发布网站 激活 Word 文档
.NET Website Publish Website on Web Server Activating Word Documents
该网站的目的是让用户在输入字段中输入值,这些值用于查找和替换 word 文档中的文本。
这可以在我的机器上本地运行并替换 word 文档并将它们保存在正确的路径中。
我尝试使用文件系统将网站发布到网络服务器上的某个位置。我在 IIS 管理器上创建了一个新站点,目前工作正常,网站页面已加载。只要我点击一个按钮来生成 word 文档,我就会收到以下错误:
[NullReferenceException: Object reference not set to an instance of an
object.] 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(Boolean
includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
+1664
尝试定义word应用程序、word文档并尝试激活word文档时似乎失败了。我尝试通过在网络服务器上使用 visual studio 打开 IIS 网站来调试它,但是我一直无法在网络服务器上开始调试。:
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 路径,这似乎在本地找到了正确的路径,但我不知道它是否真的能够 access/read 并将文件写回到这个位置可能是另一个地方也出错了。
private static string directoryroot = @"\testserver05\c$\inetpub\wwwroot\PoA\PoA Testing";
我已经在网络服务器上安装了 .NET 4.5 和 bundle 4.0、3 和 2。还安装了 microsoft word。
Microsoft 目前不推荐也不支持来自任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT)的 Microsoft Office 应用程序自动化服务),因为当 Office 在此环境中 运行 时,Office 可能会表现出不稳定的行为 and/or 死锁。
如果您要在服务器端上下文中构建 运行 的解决方案,您应该尝试使用已针对无人值守执行安全设置的组件。或者,您应该尝试找到至少允许 运行 客户端部分代码的替代方案。如果您从服务器端解决方案使用 Office 应用程序,该应用程序将缺少许多 运行 成功所必需的功能。此外,您将承担整体解决方案稳定性的风险。在 Considerations for server-side Automation of Office 文章中阅读更多相关信息。
作为解决方法,您可以考虑使用 Open XML SDK,有关详细信息,请参阅 Welcome to the Open XML SDK 2.5 for Office。或者只考虑使用为服务器端执行而设计的任何第三方组件。
该网站的目的是让用户在输入字段中输入值,这些值用于查找和替换 word 文档中的文本。
这可以在我的机器上本地运行并替换 word 文档并将它们保存在正确的路径中。
我尝试使用文件系统将网站发布到网络服务器上的某个位置。我在 IIS 管理器上创建了一个新站点,目前工作正常,网站页面已加载。只要我点击一个按钮来生成 word 文档,我就会收到以下错误:
[NullReferenceException: Object reference not set to an instance of an object.] 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(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1664
尝试定义word应用程序、word文档并尝试激活word文档时似乎失败了。我尝试通过在网络服务器上使用 visual studio 打开 IIS 网站来调试它,但是我一直无法在网络服务器上开始调试。:
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 路径,这似乎在本地找到了正确的路径,但我不知道它是否真的能够 access/read 并将文件写回到这个位置可能是另一个地方也出错了。
private static string directoryroot = @"\testserver05\c$\inetpub\wwwroot\PoA\PoA Testing";
我已经在网络服务器上安装了 .NET 4.5 和 bundle 4.0、3 和 2。还安装了 microsoft word。
Microsoft 目前不推荐也不支持来自任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT)的 Microsoft Office 应用程序自动化服务),因为当 Office 在此环境中 运行 时,Office 可能会表现出不稳定的行为 and/or 死锁。
如果您要在服务器端上下文中构建 运行 的解决方案,您应该尝试使用已针对无人值守执行安全设置的组件。或者,您应该尝试找到至少允许 运行 客户端部分代码的替代方案。如果您从服务器端解决方案使用 Office 应用程序,该应用程序将缺少许多 运行 成功所必需的功能。此外,您将承担整体解决方案稳定性的风险。在 Considerations for server-side Automation of Office 文章中阅读更多相关信息。
作为解决方法,您可以考虑使用 Open XML SDK,有关详细信息,请参阅 Welcome to the Open XML SDK 2.5 for Office。或者只考虑使用为服务器端执行而设计的任何第三方组件。