Error closing Word doc: "The message filter indicated that the application is busy."

15,768

There isn't anything wrong with your code. The problem is you are running it in an unsupported configuration, and the behaviour of office is undefined in this situation (running under asp.net)

Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.

For more info:

http://support.microsoft.com/kb/257757

You can however use the VSTO server document class to work with office documents without starting Office.

Share:
15,768
Steven
Author by

Steven

Updated on June 04, 2022

Comments

  • Steven
    Steven almost 2 years

    I'm using Microsoft Interop to save a Word Doc as an HTML file, and I'm getting this error when I try to close the document:

    The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

    Here's my code:

    // word interop setting
    object visible = true;
    object readOnly = true;
    object missing = Type.Missing;
    object saveChanges = true;
    object htmlFile = (object)Server.MapPath(@"worddoc.html");
    object fileType = 
      (object)Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatFilteredHTML;       
    
    // open document
    Microsoft.Office.Interop.Word.Application wordApp =
      new Microsoft.Office.Interop.Word.Application();
    Microsoft.Office.Interop.Word.Document wordDoc =
      wordApp.Documents.Open(ref url, ref missing, ref readOnly, ref missing,
           ref missing, ref missing, ref missing, ref missing, ref missing,
           ref missing, ref  missing, ref  visible, ref missing, ref missing,
           ref missing, ref missing);
    
    try
    {                           
        // save the file                 
        wordDoc.SaveAs(ref htmlFile, ref fileType, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing, ref missing, ref missing,
            ref missing, ref missing);
    }
    catch (System.Exception ex)
    {
        saveChanges = false;
    }
    finally
    {
        wordDoc.Close(ref saveChanges, ref missing, ref missing); // ERROR HERE
        wordApp.Quit(ref saveChanges, ref missing, ref missing);
        wordDoc = null;
        wordApp = null;
    }
    

    Anyone know what I'm doing wrong?