Je cree un objet COM sur un autre serveur EXE et j'essaie de caster
l'objet en une autre interface sans succes.
Voici le code
Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true);
object o = Activator.CreateInstance(t);
m_DCOMServer = o as SD_ServerIntf.ISWS_Server;
if (m_DCOMServer == null)
MessageBox.Show("Failed");
Si je cree l'objet sur la meme machine cela marche parfaitement.
Si je cree l'objet sur une machine distante l'objet est cree, plus
precisemment o est bien cree et sur la machine distante je vois que
l'objet est cree, mais le cast ne marche pas et m_DCOMServer vaut null.
Auriez-vous une idee svp ?
Merci.
--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fabrice MALAINGRE
Bonsoir Michael,
Je cree un objet COM sur un autre serveur EXE et j'essaie de caster l'objet en une autre interface sans succes.
Voici le code Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true); object o = Activator.CreateInstance(t); m_DCOMServer = o as SD_ServerIntf.ISWS_Server; if (m_DCOMServer == null) MessageBox.Show("Failed");
Si je cree l'objet sur la meme machine cela marche parfaitement. Si je cree l'objet sur une machine distante l'objet est cree, plus precisemment o est bien cree et sur la machine distante je vois que l'objet est cree, mais le cast ne marche pas et m_DCOMServer vaut null. Auriez-vous une idee svp ?
J'aurais plutôt deux questions : 1) Est-ce que l'objet "o" est bien non null côté client lors d'une instanciation sur la machine distante ? Ou est-ce seulement le cast qui ne fonctionne pas ?
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté serveur distant, sachant que l'utilisateur qui effectue la demande soit être connu de ce serveur ?
Cordialement
____________________________ Fabrice MALAINGRE Architecte Logiciel - Chef de Projet THEORIS - www.theoris.fr
Bonsoir Michael,
Je cree un objet COM sur un autre serveur EXE et j'essaie de caster
l'objet en une autre interface sans succes.
Voici le code
Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true);
object o = Activator.CreateInstance(t);
m_DCOMServer = o as SD_ServerIntf.ISWS_Server;
if (m_DCOMServer == null)
MessageBox.Show("Failed");
Si je cree l'objet sur la meme machine cela marche parfaitement.
Si je cree l'objet sur une machine distante l'objet est cree, plus
precisemment o est bien cree et sur la machine distante je vois que
l'objet est cree, mais le cast ne marche pas et m_DCOMServer vaut null.
Auriez-vous une idee svp ?
J'aurais plutôt deux questions :
1) Est-ce que l'objet "o" est bien non null côté client lors d'une
instanciation sur la machine distante ?
Ou est-ce seulement le cast qui ne fonctionne pas ?
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté
serveur distant,
sachant que l'utilisateur qui effectue la demande soit être connu de ce
serveur ?
Cordialement
____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr
Je cree un objet COM sur un autre serveur EXE et j'essaie de caster l'objet en une autre interface sans succes.
Voici le code Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true); object o = Activator.CreateInstance(t); m_DCOMServer = o as SD_ServerIntf.ISWS_Server; if (m_DCOMServer == null) MessageBox.Show("Failed");
Si je cree l'objet sur la meme machine cela marche parfaitement. Si je cree l'objet sur une machine distante l'objet est cree, plus precisemment o est bien cree et sur la machine distante je vois que l'objet est cree, mais le cast ne marche pas et m_DCOMServer vaut null. Auriez-vous une idee svp ?
J'aurais plutôt deux questions : 1) Est-ce que l'objet "o" est bien non null côté client lors d'une instanciation sur la machine distante ? Ou est-ce seulement le cast qui ne fonctionne pas ?
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté serveur distant, sachant que l'utilisateur qui effectue la demande soit être connu de ce serveur ?
Cordialement
____________________________ Fabrice MALAINGRE Architecte Logiciel - Chef de Projet THEORIS - www.theoris.fr
Michael Moreno
Bonjour,
J'aurais plutôt deux questions : 1) Est-ce que l'objet "o" est bien non null côté client lors d'une instanciation sur la machine distante ?
oui o est non null
Ou est-ce seulement le cast qui ne fonctionne pas ?
C'est bien le cast qui ne marche pas.
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté serveur distant, sachant que l'utilisateur qui effectue la demande soit être connu de ce serveur ?
DCOM est bien configure.
Merci.
-- Michael ---- http://michael.moreno.free.fr/ http://port.cogolin.free.fr/
Bonjour,
J'aurais plutôt deux questions :
1) Est-ce que l'objet "o" est bien non null côté client lors d'une
instanciation sur la machine distante ?
oui o est non null
Ou est-ce seulement le cast qui ne fonctionne pas ?
C'est bien le cast qui ne marche pas.
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté
serveur distant,
sachant que l'utilisateur qui effectue la demande soit être connu de ce
serveur ?
DCOM est bien configure.
Merci.
--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
J'aurais plutôt deux questions : 1) Est-ce que l'objet "o" est bien non null côté client lors d'une instanciation sur la machine distante ?
oui o est non null
Ou est-ce seulement le cast qui ne fonctionne pas ?
C'est bien le cast qui ne marche pas.
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté serveur distant, sachant que l'utilisateur qui effectue la demande soit être connu de ce serveur ?
DCOM est bien configure.
Merci.
-- Michael ---- http://michael.moreno.free.fr/ http://port.cogolin.free.fr/
Fabrice MALAINGRE
>> J'aurais plutôt deux questions : 1) Est-ce que l'objet "o" est bien non null côté client lors d'une instanciation sur la machine distante ?
oui o est non null
Ou est-ce seulement le cast qui ne fonctionne pas ?
C'est bien le cast qui ne marche pas.
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté serveur distant, sachant que l'utilisateur qui effectue la demande soit être connu de ce serveur ?
DCOM est bien configure.
OK, cela a le mérite d'être claire... Continuons donc de procéder par élimination :
1) La définition de l'interface ISWS_Server est-elle assurée par le composant serveur lui même où par un composant tiers ? Corollaire : est-elle bien enregistrée côté serveur... et côté client ?
2) La dll de marshalling associée à cette interface est-elle bien présente et enregistrée côté client ?
Cordialement
____________________________ Fabrice MALAINGRE Architecte Logiciel - Chef de Projet THEORIS - www.theoris.fr
>> J'aurais plutôt deux questions :
1) Est-ce que l'objet "o" est bien non null côté client lors d'une
instanciation sur la machine distante ?
oui o est non null
Ou est-ce seulement le cast qui ne fonctionne pas ?
C'est bien le cast qui ne marche pas.
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté
serveur distant,
sachant que l'utilisateur qui effectue la demande soit être connu de ce
serveur ?
DCOM est bien configure.
OK, cela a le mérite d'être claire...
Continuons donc de procéder par élimination :
1) La définition de l'interface ISWS_Server est-elle assurée par le
composant serveur lui même où par un composant tiers ?
Corollaire : est-elle bien enregistrée côté serveur... et côté client ?
2) La dll de marshalling associée à cette interface est-elle bien présente
et enregistrée côté client ?
Cordialement
____________________________
Fabrice MALAINGRE
Architecte Logiciel - Chef de Projet
THEORIS - www.theoris.fr
>> J'aurais plutôt deux questions : 1) Est-ce que l'objet "o" est bien non null côté client lors d'une instanciation sur la machine distante ?
oui o est non null
Ou est-ce seulement le cast qui ne fonctionne pas ?
C'est bien le cast qui ne marche pas.
2) Est-ce que les droits de l'objet COM instancié ont été spécifiés côté serveur distant, sachant que l'utilisateur qui effectue la demande soit être connu de ce serveur ?
DCOM est bien configure.
OK, cela a le mérite d'être claire... Continuons donc de procéder par élimination :
1) La définition de l'interface ISWS_Server est-elle assurée par le composant serveur lui même où par un composant tiers ? Corollaire : est-elle bien enregistrée côté serveur... et côté client ?
2) La dll de marshalling associée à cette interface est-elle bien présente et enregistrée côté client ?
Cordialement
____________________________ Fabrice MALAINGRE Architecte Logiciel - Chef de Projet THEORIS - www.theoris.fr
Michael Moreno
> 1) La définition de l'interface ISWS_Server est-elle assurée par le composant serveur lui même où par un composant tiers ? Corollaire : est-elle bien enregistrée côté serveur... et côté client ?
C'est dans une tlb qui est correctement enregistree cote serveur et client (cela marche parfaitement si le client et le serveur sont lances sur la meme machine et ce sur les 2 machines)
2) La dll de marshalling associée à cette interface est-elle bien présente et enregistrée côté client ?
La dll est bien presente et elle est privee => pas d'enregistrement a faire. L'appli charge la bonne dll. Je n'ai pas 350 versions mais bien une seule et unique version de la dll meme si Visual Studio duplique a tout va les dlls.
J'ai fait des tests supplementaire. Si je fais:
Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true); SWS_PriceCacheServerClass o = (SWS_PriceCacheServerClass)Activator.CreateInstance(t); m_DCOMServer = o as SD_ServerIntf.ISWS_Server;
Alors cela marche. Mais dans ce cas je perds l'utilite de passer par des interfaces et la fonction n'est plus du tout generique ce que je souhaite eviter.
Merci beaucoup.
-- Michael ---- http://michael.moreno.free.fr/ http://port.cogolin.free.fr/
> 1) La définition de l'interface ISWS_Server est-elle assurée par le composant
serveur lui même où par un composant tiers ?
Corollaire : est-elle bien enregistrée côté serveur... et côté client ?
C'est dans une tlb qui est correctement enregistree cote serveur et
client (cela marche parfaitement si le client et le serveur sont lances
sur la meme machine et ce sur les 2 machines)
2) La dll de marshalling associée à cette interface est-elle bien présente et
enregistrée côté client ?
La dll est bien presente et elle est privee => pas d'enregistrement a
faire. L'appli charge la bonne dll. Je n'ai pas 350 versions mais bien
une seule et unique version de la dll meme si Visual Studio duplique a
tout va les dlls.
J'ai fait des tests supplementaire. Si je fais:
Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true);
SWS_PriceCacheServerClass o =
(SWS_PriceCacheServerClass)Activator.CreateInstance(t);
m_DCOMServer = o as SD_ServerIntf.ISWS_Server;
Alors cela marche. Mais dans ce cas je perds l'utilite de passer par
des interfaces et la fonction n'est plus du tout generique ce que je
souhaite eviter.
Merci beaucoup.
--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
> 1) La définition de l'interface ISWS_Server est-elle assurée par le composant serveur lui même où par un composant tiers ? Corollaire : est-elle bien enregistrée côté serveur... et côté client ?
C'est dans une tlb qui est correctement enregistree cote serveur et client (cela marche parfaitement si le client et le serveur sont lances sur la meme machine et ce sur les 2 machines)
2) La dll de marshalling associée à cette interface est-elle bien présente et enregistrée côté client ?
La dll est bien presente et elle est privee => pas d'enregistrement a faire. L'appli charge la bonne dll. Je n'ai pas 350 versions mais bien une seule et unique version de la dll meme si Visual Studio duplique a tout va les dlls.
J'ai fait des tests supplementaire. Si je fais:
Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true); SWS_PriceCacheServerClass o = (SWS_PriceCacheServerClass)Activator.CreateInstance(t); m_DCOMServer = o as SD_ServerIntf.ISWS_Server;
Alors cela marche. Mais dans ce cas je perds l'utilite de passer par des interfaces et la fonction n'est plus du tout generique ce que je souhaite eviter.
Merci beaucoup.
-- Michael ---- http://michael.moreno.free.fr/ http://port.cogolin.free.fr/
Michael Moreno
> Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true); SWS_PriceCacheServerClass o = (SWS_PriceCacheServerClass)Activator.CreateInstance(t); m_DCOMServer = o as SD_ServerIntf.ISWS_Server;
Cela ne marche pas. Cela ne plante pas mais au premier appel suivant ca plante en me disant que QueryInterface n'a pas marche...
-- Michael ---- http://michael.moreno.free.fr/ http://port.cogolin.free.fr/
> Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true);
SWS_PriceCacheServerClass o =
(SWS_PriceCacheServerClass)Activator.CreateInstance(t);
m_DCOMServer = o as SD_ServerIntf.ISWS_Server;
Cela ne marche pas. Cela ne plante pas mais au premier appel suivant ca
plante en me disant que QueryInterface n'a pas marche...
--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
> Type t = Type.GetTypeFromProgID(DCOMProgID, MachineName, true); SWS_PriceCacheServerClass o = (SWS_PriceCacheServerClass)Activator.CreateInstance(t); m_DCOMServer = o as SD_ServerIntf.ISWS_Server;
Cela ne marche pas. Cela ne plante pas mais au premier appel suivant ca plante en me disant que QueryInterface n'a pas marche...
-- Michael ---- http://michael.moreno.free.fr/ http://port.cogolin.free.fr/
Arnaud Debaene
Michael Moreno wrote:
DCOM est bien configure.
Y compris avec les nouvelles "limites" de sécurité qui ont été rajoutées dans XP SP2?
Elles sont accessibles par dcomcnfg, propriétés de la machine, onglet "Sécurité COM". Dans un 1er temps pour tes tests, mets les droits distants à "Tout le monde" et à "ANONYMOUS LOGON" (j'ai vu des cas où il me semblait que l'impersonation se faisait après applications du filtrage par limites, mais ce n'est pas très clair et affreusement mal documenté).
Arnaud MVP - VC
Michael Moreno wrote:
DCOM est bien configure.
Y compris avec les nouvelles "limites" de sécurité qui ont été rajoutées
dans XP SP2?
Elles sont accessibles par dcomcnfg, propriétés de la machine, onglet
"Sécurité COM". Dans un 1er temps pour tes tests, mets les droits distants
à "Tout le monde" et à "ANONYMOUS LOGON" (j'ai vu des cas où il me semblait
que l'impersonation se faisait après applications du filtrage par limites,
mais ce n'est pas très clair et affreusement mal documenté).
Y compris avec les nouvelles "limites" de sécurité qui ont été rajoutées dans XP SP2?
Elles sont accessibles par dcomcnfg, propriétés de la machine, onglet "Sécurité COM". Dans un 1er temps pour tes tests, mets les droits distants à "Tout le monde" et à "ANONYMOUS LOGON" (j'ai vu des cas où il me semblait que l'impersonation se faisait après applications du filtrage par limites, mais ce n'est pas très clair et affreusement mal documenté).
Arnaud MVP - VC
Michael Moreno
> Elles sont accessibles par dcomcnfg, propriétés de la machine, onglet "Sécurité COM". Dans un 1er temps pour tes tests, mets les droits distants à "Tout le monde" et à "ANONYMOUS LOGON" (j'ai vu des cas où il me semblait que l'impersonation se faisait après applications du filtrage par limites, mais ce n'est pas très clair et affreusement mal documenté).
C'est deja fait. C'est pour cela que je peux lancer le serveur et cree l'objet.
Je crois que je vais tout formatter et recommencer depuis le debut.
-- Michael ---- http://michael.moreno.free.fr/ http://port.cogolin.free.fr/
> Elles sont accessibles par dcomcnfg, propriétés de la machine, onglet
"Sécurité COM". Dans un 1er temps pour tes tests, mets les droits distants à
"Tout le monde" et à "ANONYMOUS LOGON" (j'ai vu des cas où il me semblait que
l'impersonation se faisait après applications du filtrage par limites, mais
ce n'est pas très clair et affreusement mal documenté).
C'est deja fait. C'est pour cela que je peux lancer le serveur et cree
l'objet.
Je crois que je vais tout formatter et recommencer depuis le debut.
--
Michael
----
http://michael.moreno.free.fr/
http://port.cogolin.free.fr/
> Elles sont accessibles par dcomcnfg, propriétés de la machine, onglet "Sécurité COM". Dans un 1er temps pour tes tests, mets les droits distants à "Tout le monde" et à "ANONYMOUS LOGON" (j'ai vu des cas où il me semblait que l'impersonation se faisait après applications du filtrage par limites, mais ce n'est pas très clair et affreusement mal documenté).
C'est deja fait. C'est pour cela que je peux lancer le serveur et cree l'objet.
Je crois que je vais tout formatter et recommencer depuis le debut.
-- Michael ---- http://michael.moreno.free.fr/ http://port.cogolin.free.fr/