C# 从Asp.net应用程序在客户端打开Word文档

C# 从Asp.net应用程序在客户端打开Word文档,c#,asp.net,document,C#,Asp.net,Document,我们需要使用Microsoft word打开位于客户端计算机服务器上的word文档。该解决方案在本地工作,但是当部署到服务器上时,唯一发生的事情是在服务器上启动winword.exe。使用互操作或javascript可以做到这一点吗 这是到目前为止的密码 Microsoft.Office.Interop.Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); object fil

我们需要使用Microsoft word打开位于客户端计算机服务器上的word文档。该解决方案在本地工作,但是当部署到服务器上时,唯一发生的事情是在服务器上启动winword.exe。使用互操作或javascript可以做到这一点吗

这是到目前为止的密码

Microsoft.Office.Interop.Word.ApplicationClass wordApp = new Microsoft.Office.Interop.Word.ApplicationClass();

object file = FilePath + FileName;
lblError.Text = lblError.Text + file.ToString(); 
object readOnly = false;
object objTrue = true;
object missing = System.Reflection.Missing.Value;
object emptyData = string.Empty;
wordApp.Visible = true;
Microsoft.Office.Interop.Word.Document aDoc                         =
wordApp.Documents.Open(ref file,
         ref missing, ref readOnly,
         ref missing, ref missing, ref missing,
         ref missing, ref missing, ref missing,
         ref missing, ref missing, ref objTrue);

aDoc.Activate();

您必须记住,客户机和服务器运行在两台不同的机器上。服务器无法启动在客户端计算机上运行的程序


另外,仅供参考,从不从ASP.NET应用程序使用办公自动化。这些API是为在桌面应用程序中使用而设计的。它们不能正常工作,不受支持,甚至可能违反您的Office许可证。

它在本地工作的原因是,它不是。发生的情况是,服务器正在打开文档,但由于您的本地计算机充当服务器,因此似乎文件已打开

一个简单的解决方案是用户下载文件,编辑并上传回您。


<script language="javascript" type="text/javascript"> 
    function openDokument(dokument){ 
        var objAppl;

        try{ 
            objAppl = GetObject("","Word.Application"); 
            objAppl.Documents.open(dokument); 
        } 
        catch(exception){ 
            objAppl = new ActiveXObject("Word.Application");
            objAppl.Visible = true;
            alert(dokument);
            objAppl.Documents.open(dokument);
            objAppl.Activate(); 
        }    
        objAppl = null;           
    }
</script>
函数openDokument(dokument){ var-objAppl; 试试{ objAppl=GetObject(“,”Word.Application”); 对象文档打开(dokument); } 捕获(例外){ objAppl=新的ActiveXObject(“Word.Application”); objAppl.Visible=true; 警觉(多愁善感); 对象文档打开(dokument); objAppl.Activate(); } objAppl=null; }
您可以使用DocX类创建word文档。然后使用Response.Write()方法(确切地说,doxment扩展名是.docx)在您的计算机中下载文档

感谢john的输入,所以无法从客户端计算机打开word.exe?我已经尝试了很多解决方案,但是没有成功。如果服务器可以在客户机上运行任意程序,这将是一个巨大的安全问题!