服务器上出现错误“此命令不可用,因为没有打开文档”

时间:2012-04-18 06:10:11

标签: c# asp.net office-automation word-automation

我使用此代码将数据发送到Word模板并发送给客户端。

        protected void Button1_Click(object sender, EventArgs e)
    {
        object missing = System.Reflection.Missing.Value;
        Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();

        string DocFilePath = "";
        //string FilePath = System.Windows.Forms.Application.StartupPath;
        object fileName = Server.MapPath(@"~\asset\wordtemplates\Estelam.dot");
        DocFilePath = fileName.ToString();

        FileInfo fi = new FileInfo(DocFilePath);
        if (fi.Exists)
        {
            object readOnly = false;
            object isVisible = true;

            object LetterNo = "LetterNo";
            object LetterDate = "LetterDate";
            object Attachment = "Attachment";

            object To = "To";
            object From = "From";

            object Fname = "Fname";
            object Lname = "Lname";
            object FatherName = "FatherName";
            object IDNumber = "IDNumber";
            object BirthDate = "BirthDate";
            object BirthLocation = "BirthLocation";
            object PersonelID = "PersonelID";
            object MembershipDate = "MembershipDate";
            object Membership = "Membership";

            object Degree = "Degree";
            object Level = "Level";
            object Guild = "Guild";
            object Janbazi = "Janbazi";
            object Esarat = "Esarat";
            object Education = "Education";
            object Field = "Field";
            object Education2 = "Education2";
            object DocLocation = "DocLocation";

            Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref fileName, ref missing, ref readOnly,
               ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
               ref isVisible, ref isVisible, ref missing, ref missing, ref missing);

            //Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref fileName);

            WordApp.ActiveDocument.FormFields.get_Item(ref LetterNo).Result = TextBox_LetterNo.Text;

此代码在本地工作良好且正确,但是当我发布此站点并放入我的服务器时,我得到此错误运行时间。

  

此命令不可用,因为没有文档打开。   描述:执行期间发生未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。   异常详细信息:System.Runtime.InteropServices.COMException:This   命令不可用,因为没有文档打开。

     

源错误:执行期间生成了未处理的异常   当前的网络请求。关于起源和信息的信息   可以使用异常堆栈标识异常的位置   跟踪下面。

为什么它无法在服务器中打开?如何解决这个错误?

我使用的是Windows7,VS2010,SQLServer2008,office2010,而在Server中使用的是Windows Server 2008,IIS7,office2010。

我应该在服务器上为此错误做些什么?

3 个答案:

答案 0 :(得分:2)

您缺少OfficeAutomation的桌面文件夹,请检查here

您还需要配置OfficeAutomationUser帐户(如果尚未安装)以自动执行Office应用程序,请检查this

注意:建议不要在服务器上安装Office自动化。尝试使用Open Xml sdk自动化办公应用程序。

答案 1 :(得分:0)

阅读此word in asp,您将看到示例VB,但我认为您将获得所需的信息。

答案 2 :(得分:0)

您是否尝试在配置文件中将模板路径放在服务器上? 服务器路径不是相对的" D://项目文件夹/模板文件夹"。 然后读取应用程序中的路径, 将其放入配置文件将使您在未来重新发布网站时更容易更改