【问题标题】:Open word document from ASP.NET application从 ASP.NET 应用程序打开 word 文档
【发布时间】:2012-04-26 01:52:12
【问题描述】:

我使用以下代码 sn-p 打开本地 docx 文件,当我在 Visual Studio 中按 Ctrl+F5 时它运行良好。我只需单击按钮,我机器上的 Word2007 就会打开,并且 docx 会显示在那里。但是在我将应用程序发布到生产服务器后,它就不起作用了。单击相同的按钮后,什么也没发生。有人能告诉我为什么吗?

我想要的是从 asp.net 应用程序在客户端的 Word 2007 中打开一个本地存储的 docx。我不想使用 office COM 对象。

我的代码:

    ProcessStartInfo psi = new ProcessStartInfo(@"winword.exe",@"/test.docx");
    Process.Start(psi);  

非常感谢。

【问题讨论】:

  • 为什么需要打开winword.exe?读取文件内容?

标签: asp.net


【解决方案1】:

您的代码试图在服务器上而不是客户端上打开 Word。它在开发中工作的唯一原因是客户端和服务器在同一台机器上。

由于浏览器安全限制,您无法在客户端上打开 Word。但是,如果您提供该文件的链接,则用户将能够下载并打开该文件(如果他们安装了 Word)。

【讨论】:

    【解决方案2】:

    如果要打开本地存储的文档,请在客户端计算机上创建指向该文档的链接(使用客户端硬盘上的路径)。浏览器会询问用户是否允许打开它,但这应该可以工作。

    您的代码工作的原因是因为调试时服务器和客户端是同一台机器。开发服务器甚至使用您的配置文件运行。

    在生产中,服务器可以位于世界的另一端。您在 sn-p 中显示的 C# 代码在服务器上执行。

    【讨论】:

      【解决方案3】:

      检查文件是否存在于同一位置。

      ProcessStartInfo psi = new ProcessStartInfo() 正在服务器上工作,它试图从服务器位置选择文件,它永远无法运行客户端文件。

      【讨论】:

      • 它不仅试图从服务器中挑选文件,它还在在服务器上启动 Word
      【解决方案4】:

      您唯一能做的就是让他们下载文件。如果他们没有办公室,或者没有合适的兼容性包,他们将无法打开它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-29
        • 1970-01-01
        • 2021-12-15
        • 1970-01-01
        相关资源
        最近更新 更多