4

Microsoft Interop を使用して Word ドキュメントを HTML ファイルとして保存していますが、ドキュメントを閉じようとすると次のエラーが表示されます。

メッセージ フィルタは、アプリケーションがビジーであることを示しました。(HRESULT からの例外: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

これが私のコードです:

// 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;
}

私が間違っていることを知っている人はいますか?

4

1 に答える 1

6

コードに問題はありません。問題は、サポートされていない構成で実行していることです。この状況ではオフィスの動作が未定義です (asp.net で実行)。

Office が不安定な動作を示したり、/または、この環境で Office を実行するとデッドロックが発生します。

詳細については:

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

ただし、VSTO サーバー ドキュメントクラスを使用すると、Office を起動せずに Office ドキュメントを操作できます。

于 2012-12-21T18:52:41.693 に答える