47 votes

L'erreur HRESULT E_FAIL a été renvoyée par un appel à un composant COM.

Que signifie cette erreur "Error HRESULT E_FAIL has been returned from a call to a COM component." dans une application Silverlight 4 ? C'est une erreur très générique. Le débogueur VS n'indique pas l'emplacement exact de l'erreur lors du débogage.

22voto

Rachel Points 141

C'est une vieille question, mais je me suis dit que j'allais y répondre puisque j'ai trouvé ce fil de discussion en cherchant exactement le même problème sur Google.

Dans mon cas, j'avais copié quelques exemples de XAML sur le web pour commencer à utiliser Silverlight Toolkit 4. Cet exemple XAML contenait un simple bouton avec un gestionnaire d'événement de clic qui n'était pas lié à un gestionnaire qui existait réellement dans mon code. Je n'ai pas remarqué ce simple problème au début, car le compilateur ne m'a pas donné de message d'erreur, j'ai juste vu le message "Error HRESULT E_FAIL has been returned from a call to a COM component" ci-dessus au moment de l'exécution. Ce n'est que lorsque j'ai isolé mon échantillon XAML en le copiant dans une toute nouvelle application Silverlight sans autre contenu que le véritable problème sous-jacent a été révélé au moment de la compilation.

Donc, si vous avez le même message d'erreur au moment de l'exécution, je vous conseille de vérifier soigneusement votre XAML pour détecter toute erreur qui aurait dû être détectée au moment de la compilation, mais qui, pour une raison quelconque, s'est retrouvée dans l'erreur d'exécution mentionnée ci-dessus. Afin de déboguer, vous pouvez faire ce que j'ai fait et isoler le code qui cause l'erreur dans une application Silverlight autonome sans autre contenu, et voir si, comme moi, vous obtenez un message d'erreur plus utile pour vous guider.

HTH.

1 votes

La réponse à cette question ne sera pas simple. Vous devez tout vérifier et rechercher les incohérences.

6voto

greensuisse Points 512

Dans ma situation :

Je crée un

class MyControl : ContentControl {
}

Par défaut, la classe n'est pas publique et XAML ne peut pas la charger et lancer une exception.

L'erreur HRESULT E_FAIL a été renvoyée par un appel à un composant COM.

Il suffit de changer la portée de la classe en public et l'erreur disparaît.

J'espère que cela vous aidera.

PS. Microsoft devrait fournir plus d'informations que de lancer un message d'erreur mystérieux sans aucune trace de pile.

3voto

Mauricio Rojas Points 121

J'ai également eu cette erreur et j'ai découvert que ce problème est lié au fait que vous n'avez pas ajouté tous les assemblages requis à votre projet. Dans mon cas, j'utilisais un UserControl avec une dépendance du Silverlight Toolkit et je n'avais pas ajouté cette référence. J'ai juste ajouté la référence et tout est résolu :)

2voto

Luke Woodward Points 20417

Voici une façon de générer cette erreur, que j'ai découverte par hasard aujourd'hui. Nous avons le bouton suivant dans XAML :

    <Button x:Name="button" Click="Button_Click" Content="Click me" />

Le gestionnaire d'événements qui gère le bouton Click est le suivant :

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        button.Margin = new Thickness(0, double.NaN, 0, 0);
    }

Lorsque je clique sur le bouton, j'obtiens l'erreur susmentionnée. La même erreur se produit si je remplace NaN avec PositiveInfinity ou NegativeInfinity .

Il est intéressant de noter que j'obtiens un message d'erreur différent si le premier paramètre de la fonction Thickness contient l'élément NaN au lieu de la seconde.

2voto

Ben Parsons Points 1173

J'ai eu cette erreur à cause de problèmes avec XAML. La chose étrange était que j'avais des ressources manquantes utilisées par Style et Margin ce qui signifie que l'application fonctionne bien, et que même resharper ne signale qu'un "indice".

Une fois ces problèmes résolus, le message "Error HRESULT E_FAIL has been returned from a call to a COM component" a disparu. Comme d'autres l'ont dit, il s'agit d'une erreur vague, très difficile à déboguer. Dans ce cas, j'ai hérité d'un grand projet avec des centaines de messages VS et ReSharper de gravité variable - manquant StaticResource sur Style Les attributs n'étaient pas le premier endroit que j'ai vérifié !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X