2017-07-26 1 views
0

J'ai un code assez basique qui semble fonctionner pour la plupart des gens, mais il y a au moins un poste de travail qui jette ce code HRESULT quand il exécute ces lignes de code couple:Perspectives Interop Exception HRESULT: 0xCA140115

Outlook.Application _OutlookInstance = new Outlook.Application(); 
Outlook.Stores stores = _OutlookInstance.Session.Stores; 

Tous idée quel code HRESULT 0xCA140115 est ou ce que cela signifie? Je ne le trouve sur MSDN nulle part ...

Le poste de travail qui rencontre le problème se trouve dans un centre d'appel distant, donc je ne peux pas faire de test/débogage immédiat, ou voir facilement ce qui est différent ce poste de travail par rapport aux autres. J'imagine qu'il pourrait y avoir plus de postes de travail dans ce même centre d'appels qui pourraient avoir l'erreur, mais ce code est encore dans la phase de test.

+0

Quelle propriété ou méthode déclenche exactement une exception? Où et quand exécutez-vous le code ci-dessus? –

+0

Ceci est une application de test - une application winforms qui démarre et exécute immédiatement ces deux lignes (le reste du code n'est pas touché car il lance l'exception). Il est difficile de dire pour le moment quelle propriété ou méthode spécifique le déclenche puisque je ne peux pas tester très facilement (seul l'utilisateur distant peut le reproduire jusqu'à présent, donc je suis lié à sa disponibilité pour tester) – jhilgeman

+0

Quelle version d'Outlook est installée sur la machine? Est-ce l'édition Click2Run? –

Répondre

0

Désolé pour le retard, mais j'ai pu passer à travers plusieurs autres itérations de tests et de savoir quel était le problème. Tout d'abord, mon message original était incorrect. Le flux de code fait croire que l'erreur se passait au cours de ces 2 premières lignes, mais il se passait réellement un peu plus tard, quand je Boucler dans les magasins, comme celui-ci:

Outlook.Stores stores = _OutlookInstance.Session.Stores; 
foreach(Outlook.Store store in stores) // <----- THIS LINE 
{ 
    ... 
} 

Chaque fois que l'utilisateur a couru cette , il obtiendrait un autre code d'erreur HRESULT:

0xCA140115

0xAF64011D

0xC1F4011D

0xC8340 11D

Le seul facteur cohérent était le "4011" au milieu.

Lorsque j'ai augmenté l'enregistrement, je pouvais voir que l'utilisateur avait 18 boîtes aux lettres et la boucle foreach() a été en train de passer les 3 premiers, mais à défaut le 4. La 4ème boîte aux lettres était un magasin "Dossiers publics" associé à une autre boîte aux lettres qui a été ajoutée différemment du reste des boîtes aux lettres (il s'agissait d'une boîte aux lettres Outlook 365 nécessitant une authentification différente).

Donc, essentiellement, il a fini par être que toute tentative de toucher même cette boîte aux lettres particulière/magasin (y compris l'être variable « magasin » set) donnerait lieu à cette exception COM.

j'ai pu contourner le problème en boucle dans les magasins via l'index numérique de telle sorte que le réglage de « magasin » était dans mon bloc try/catch, comme ceci:

for(int i = 0; i < stores.Count; i++) 
{ 
    try 
    { 
    Outlook.Store store = stores[i]; 
    ... 
    } 
    catch(Exception) 
    { 
    ... 
    } 
} 

Maintenant, quand la boucle atteint que magasin particulier, je pourrais dire que c'était Outlook dire que le serveur n'était pas disponible, et le magasin était un magasin en ligne seulement, de sorte que le magasin ne pouvait pas être consulté.

Je ne sais toujours pas pourquoi les codes d'erreur ont changé à chaque fois, mais là vous l'avez.