Erreur à la fermeture de Word doc: “Le filtre de messages indiqué que la demande est occupé.”
Je suis à l'aide de Microsoft Interop pour enregistrer un document Word en tant que fichier HTML, et j'obtiens cette erreur quand j'essaie de fermer le document:
Le filtre de message indiqué que la demande est occupé. (Exception de HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
Voici mon 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;
}
Ce que quelqu'un sait ce que je fais mal?
Il fonctionne correctement quand je l'ai tester, êtes-vous sûr que votre fichier html chemin d'accès est correct? J'ai fait une application console qui vient de gagner les fichiers en local et ça fonctionne sans problèmes. Peut-être vous exécutez une question de sécurité en fonction de l'emplacement où vous tentez d'enregistrer?
OriginalL'auteur Steven | 2012-12-21
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas quelque chose de mal avec votre code. Le problème est que vous êtes en cours d'exécution dans une configuration non prise en charge, et le comportement de bureau n'est pas défini dans cette situation (en cours d'exécution en vertu de l'asp.net)
Pour plus d'info:
http://support.microsoft.com/kb/257757
Vous pouvez cependant utiliser le VSTO document de serveur classe pour travailler avec des documents office sans de départ Bureau.
ma réponse est trop long par 81 caractères
Salut, j'ai été confrontée au même problème avec Excel pour la conversion en PDF (via le Bureau des assemblys Interop). J'ai finalement mis en œuvre la solution mentionnée ici: blogs.msdn.com/b/andreww/archive/2008/11/19/.... Veuillez noter que le coRegisterMessageFilter() de l'API fonctionne UNIQUEMENT à partir de threads STA et échoue sur les threads MTA. Ainsi Dans le cas où vous ne pouvez pas modifier le type d'appartement o votre client thread - Vous aurez besoin pour commencer une nouvelle STA (!) et attendez la fin de la (thread.Join()).
OriginalL'auteur dmck