2009-07-28 6 views
1

J'ai créé un composant interop COM à l'aide de ClassLibrary qui consomme WCF. Maintenant, lorsque j'appelle la méthode du composant COM (qui utilise WCF) à partir de ma page ASP classique, j'obtiens l'erreur suivante.Accès au composant COM à partir de ASP classique qui consomme l'erreur de lancement WCF

Type d'erreur: System.ServiceModel (0x80131509) Impossible de trouver l'élément de point final par défaut qui fait référence à un contrat 'DLSWS.IDLSWS' dans la section de configuration du client de ServiceModel. Cela peut être dû au fait qu'aucun fichier de configuration n'a été trouvé pour votre application, ou parce qu'aucun élément de terminaison correspondant à ce contrat n'a pu être trouvé dans l'élément client .

Ce que je comprends de l'erreur ci-dessus est la suivante: page asp ne peut pas lire la configuration de WCF à partir du fichier app.config dans le composant COM. Comment puis-je résoudre ce problème?

+0

Spécifiez version d'IIS? – AnthonyWJones

Répondre

0

Le composant COM possède-t-il un fichier App.config? Sinon, il est probable que le COM ne puisse pas accéder à la configuration dans web.config.

Créez un fichier App.config pour le composant ou transmettez-le dans l'instance Endpoint à partir de l'application Web.

+0

Hai Richard. Mon composant COM a app.config qui a toutes les informations WCF. Le problème ici est lorsque j'appelle le composant COM de la page ASP classique, il ne peut pas charger les informations de point de terminaison liées à WCF à partir du fichier app.config.So comment je réalise cela? –

+0

Comme darin mentionné, assurez-vous que vous avez défini le répertoire "racine de l'application" dans les propriétés de l'application COM +. Si vous utilisez Windows 2000, darin décrit une solution de contournement. –

2

Vous pouvez définir votre point de terminaison par programmation lors de la création du canal client dans votre objet COM ou utiliser app.config.

Pour définir une app.config pour application COM +:

Si vous utilisez Windows 2000, et votre COM + app est un serveur un, votre app.config doit être appelé dllhost.exe.config et doit être Dans le même répertoire que dllhost.exe (qui est% SystemRoot% \ System32).

Si vous utilisez Windows 2003, vous pouvez aller à l'onglet Activation des propriétés COM + app et définir la propriété Racine répertoire de l'application au point à un emplacement de votre choix, et, dans ce répertoire, vous devez placer un fichier appelé application.config (avec vos paramètres de configuration) et un autre fichier appelant application.manifest avec le contenu affiché ci-dessous:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
</assembly> 
+0

Hai Darin, Mon composant COM a app.config qui contient toutes les informations WCF. Le problème ici est lorsque j'appelle le composant COM de la page ASP classique, il ne peut pas charger les informations de point de terminaison liées à WCF à partir de l'app.config file.So comment puis-je y parvenir? –

+0

Où votre app.config est-il stocké? Comme je l'ai décrit dans mon post si vous êtes sur Windows 2000 le fichier doit être appelé dllhost.exe.config et situé dans% SystemRoot% \ System32 et si vous êtes sur Windows 2003 le fichier doit être appelé application.config avec l'application fichier .manifest. –

+0

@darin: Je suspecte que le vinod n'a pas twiggé le bit "plus" de "COM +", il n'y a aucune mention de COM + dans la question. – AnthonyWJones

Questions connexes