IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Composant COM sur achitecture n-tier


Sujet :

ASP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Par défaut Composant COM sur achitecture n-tier
    Salut à tous,
    J'ai un composant COM qui est utilisé pour générer un code barre, mais l'important n'est pas vraiment au niveau de sa fonctionnalité car je recontre plutôt un problème d'architecture, je m'explique.

    Mon composant est enregistré sur le serveur A, sur lequel je l'ai créé en tant que package, dans les services de composants windows afin de pouvoir l'instancier de manière distante. Pour ce faire, j'ai dû l'exporter en tant que package .msi.

    J'ai un serveur B, sur lequel tourne une application web, géré par IIS où le composant COM est instancié depuis une page asp par Server.CreateOject ... En réalité j'ai simplement installé le package .msi sur le serveur B, ce qui a créé une classe proxy qui me permet d'instancier le composant, comme s'il était local.

    Si je teste l'appel du composant depuis le server B, simplement en testant la page asp de mon application, le composant est bien instancié de manière distante, je suppose que mon IIS sur le serveur B devient alors client sur server A, lequel créé l'objet localement puis le renvoit à IIS qui le renvoit à IE.

    Jusque là tout fonctionne bien. Maintenant, si j'essaie de tester l'application depuis une autre machine, disons client C, c'est-a-dire j'ouvre un IE sur client C, je browse l'URL de mon site sur le server B, je teste la page qui est censé instancier le composant COM, cela ne fonctionne plus (le barcode est affiché normalement dans une balise img, elle est simplement vide!).

    Je pensais au départ que c'était un probleme de droit (l'application asp utilise l'authentification windows et le composant COM aussi), mais j'ai tout essayé en utilsant des comptes Guest en accordant toutes les permissions possibles mais cela n'a rien changé, cela fonctionne uniquement si je teste le composant depuis server B.

    Quelqu'un aurait-il une idée ?
    Merci d'avance de votre aide.

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Bienvenu sur le forum. C'est bizarre comme histoire. Ni B ni C ne devraient avoir un comportement différent.

    Et si tu installe ton msi sur C?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Par défaut
    Salut Immobilis,
    Merci pour ton intervention. Et bien je ne l'ai pas essayé mais cela n'aurait pas trop de sens de faire ainsi car C est le client donc pourrait, par conséquent, être n'importe quel poste utilisateur. Je ne m'imagine pas installer le package sur chaque sur chaque poste tu vois ?
    Je vais essayer tout de meme, mais si cela resou le problème alors je n'ai rien compris au principe du client server

  4. #4
    Membre habitué
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Par défaut
    Ouf, quel soulagement, après plusieurs jours passés à chercher, j'ai enfin pu trouver d'ou provenait l'erreur. En réalité ce n'était pas un bug, mais c'était bien lié à un problème de sécurité.
    Voici l'approche que j'ai utilisée afin de m'en sortir :

    - Comme expliqué plus haut, le barcode généré par le composant COM, est encapsulé dans une page asp (simplement par un Server.CreateObject puis en appelant les méthodes de l'objet...), laquelle est insérée dans une balise
    <img src="generebarcode.asp..."/>. En testant la page donc, l'image était tout simplement vide. J'ai donc enlevé la balise <img> et appelé generebarcode.asp directement et là, j'ai reçu l'erreur "Access denied on Server.CreateObject etc etc..."

    - J'ai contrôlé ensuite les évènements de sécurité de server A et là j'ai vu que le compte "Anonymous Logon" était utilisé pour un process COM. Bien que l'ayant ajouté au niveau du répertoire windows où se trouve la dll et y avoir granté toutes les permissions possibles, cela ne fontionnait toujours pas.
    En réalité, il faut aller dans les "Local Security Policy" du server qui héberge le composant, dans mon cas, server A, éditer la policy "DCOM : Machine Launch restriction...", y ajouter le compte qui se connecte au server pour les objets COM, dans mon cas le "Anonymous Logon" et lui accorder les permissions local et remote

    Merci à un utilisateur qui avait été confronté à plus moins le même cas et a détaillé sa démarche de manière encore plus exhaustive ici http://www.computerperformance.co.uk/Logon/code/code_80070005.htm

    Par contre, je ne sais pas pourquoi ce compte anonyme est utilisé lorsque client C appelle server B qui se connecte a server A car à aucune place je n'ai spécifié ce compte. Mais bon la ça marche et c'est le principal !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. doc sur composants COM (ActiveX)
    Par tubaas dans le forum MATLAB
    Réponses: 2
    Dernier message: 07/12/2009, 17h31
  2. IUnknown::Release sur un composant COM
    Par scolyo dans le forum Visual C++
    Réponses: 7
    Dernier message: 22/09/2008, 11h45
  3. Détecter la présence d'un composant COM sur le système ?
    Par Vince dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/12/2006, 10h07
  4. Composant COM et style XP
    Par Reisubar dans le forum Composants VCL
    Réponses: 7
    Dernier message: 10/11/2003, 19h23
  5. Copier un .com sur le 1er secteur d'une disquette
    Par zdra dans le forum Assembleur
    Réponses: 5
    Dernier message: 23/08/2002, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo