Communication interprocess d'un Web Service dans IIS
2 réponses
AlanG
Bonjour.
Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit
communiquer avec un programme Win 32 tournant sur la même machine. Nous avons
donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32.
La DLL win32 communique avec le programme Win 32 par 2 méthodes :
postmessage et un fichier mappé mémoire.
Le web service quant à lui fait appel à une fonction de la DLL win32 qui se
charge de réaliser l'ensemble du traitement. Cela marche très bien sous
VS2005 lorsque le service web est réalisé à partir de fichier. Par contre
l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess
ne passe ( ni postmessage ni l'accès au fichier mappé mémoire).
Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et
sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le
Web service et le programme Win32 ?
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
Nicolas Diétrich
Bonjour
Ton mécanisme d'IPC est discutable, mais ton problème est surement lié à l'identité du process IIS en jeu.
Que te rend l'accès à ton memory mapped file? Un access denied?
Ton webservice tourne sur IIS5? Quelle isolation est utilisée alors? IIS6? Quelle est l'identité de ton application pool? Network service? Fais déjà un test avec un utilisateur plus privilégié que Network Service voir si cela fonctionne.
-- Nicolas Diétrich Developer Support Escalation Engineer Microsoft France
"AlanG" a écrit :
Bonjour.
Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit communiquer avec un programme Win 32 tournant sur la même machine. Nous avons donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32. La DLL win32 communique avec le programme Win 32 par 2 méthodes : postmessage et un fichier mappé mémoire. Le web service quant à lui fait appel à une fonction de la DLL win32 qui se charge de réaliser l'ensemble du traitement. Cela marche très bien sous VS2005 lorsque le service web est réalisé à partir de fichier. Par contre l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess ne passe ( ni postmessage ni l'accès au fichier mappé mémoire). Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le Web service et le programme Win32 ?
Merci d'avance pour vos réponses
Bonjour
Ton mécanisme d'IPC est discutable, mais ton problème est surement lié à
l'identité du process IIS en jeu.
Que te rend l'accès à ton memory mapped file? Un access denied?
Ton webservice tourne sur IIS5? Quelle isolation est utilisée alors?
IIS6? Quelle est l'identité de ton application pool? Network service? Fais
déjà un test avec un utilisateur plus privilégié que Network Service voir si
cela fonctionne.
--
Nicolas Diétrich
Developer Support Escalation Engineer
Microsoft France
"AlanG" a écrit :
Bonjour.
Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit
communiquer avec un programme Win 32 tournant sur la même machine. Nous avons
donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32.
La DLL win32 communique avec le programme Win 32 par 2 méthodes :
postmessage et un fichier mappé mémoire.
Le web service quant à lui fait appel à une fonction de la DLL win32 qui se
charge de réaliser l'ensemble du traitement. Cela marche très bien sous
VS2005 lorsque le service web est réalisé à partir de fichier. Par contre
l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess
ne passe ( ni postmessage ni l'accès au fichier mappé mémoire).
Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et
sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le
Web service et le programme Win32 ?
Ton mécanisme d'IPC est discutable, mais ton problème est surement lié à l'identité du process IIS en jeu.
Que te rend l'accès à ton memory mapped file? Un access denied?
Ton webservice tourne sur IIS5? Quelle isolation est utilisée alors? IIS6? Quelle est l'identité de ton application pool? Network service? Fais déjà un test avec un utilisateur plus privilégié que Network Service voir si cela fonctionne.
-- Nicolas Diétrich Developer Support Escalation Engineer Microsoft France
"AlanG" a écrit :
Bonjour.
Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit communiquer avec un programme Win 32 tournant sur la même machine. Nous avons donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32. La DLL win32 communique avec le programme Win 32 par 2 méthodes : postmessage et un fichier mappé mémoire. Le web service quant à lui fait appel à une fonction de la DLL win32 qui se charge de réaliser l'ensemble du traitement. Cela marche très bien sous VS2005 lorsque le service web est réalisé à partir de fichier. Par contre l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess ne passe ( ni postmessage ni l'accès au fichier mappé mémoire). Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le Web service et le programme Win32 ?
Merci d'avance pour vos réponses
AlanG
Bonjour
Tout d'abord merci pour ta réponse.
Ce mécanisme avait été pensé tout simplement par l'existence de la DLL win32 et du programme Win 32 qui communiquent comme cela. J'avais simplement pensé que d'appeler la DLL par le web service m'eviterait de redevelopper le traitement qu'elle réalise.
Quand je lance le service Web , qu'il instancie la DLL , qui elle même créé la mémory mapped file tout va bien. Maintenant si je lance le programme Win 32 qui va ouvrir le memory mapped file j'obtiens effectivement un access denied. Par contre je ne comprend pas pourquoi les message postmessages ne passent pas. J'ai bien entendu effectué des tests avec une application qui monte la DLL en remplacement du service web et dans ce cas tout va bien.
Pour le moment je tourne sur la machine de dev et c'est un IIS 5 Oui Network service. Je vais faire un test avec un autre compte.
Si tu penses qu'il y a une meilleure méthode de communication IPC je suis preneur car pour le moment il n'y a que du maquettage de réalisé, alors il est encore temps de prendre une meilleure direction.
Bye
"Nicolas Diétrich" a écrit :
Bonjour
Ton mécanisme d'IPC est discutable, mais ton problème est surement lié à l'identité du process IIS en jeu.
Que te rend l'accès à ton memory mapped file? Un access denied?
Ton webservice tourne sur IIS5? Quelle isolation est utilisée alors? IIS6? Quelle est l'identité de ton application pool? Network service? Fais déjà un test avec un utilisateur plus privilégié que Network Service voir si cela fonctionne.
-- Nicolas Diétrich Developer Support Escalation Engineer Microsoft France
"AlanG" a écrit :
> Bonjour. > > Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit > communiquer avec un programme Win 32 tournant sur la même machine. Nous avons > donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32. > La DLL win32 communique avec le programme Win 32 par 2 méthodes : > postmessage et un fichier mappé mémoire. > Le web service quant à lui fait appel à une fonction de la DLL win32 qui se > charge de réaliser l'ensemble du traitement. Cela marche très bien sous > VS2005 lorsque le service web est réalisé à partir de fichier. Par contre > l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess > ne passe ( ni postmessage ni l'accès au fichier mappé mémoire). > Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et > sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le > Web service et le programme Win32 ? > > Merci d'avance pour vos réponses >
Bonjour
Tout d'abord merci pour ta réponse.
Ce mécanisme avait été pensé tout simplement par l'existence de la DLL win32
et du programme Win 32 qui communiquent comme cela. J'avais simplement pensé
que d'appeler la DLL par le web service m'eviterait de redevelopper le
traitement qu'elle réalise.
Quand je lance le service Web , qu'il instancie la DLL , qui elle même créé
la mémory mapped file tout va bien. Maintenant si je lance le programme Win
32 qui va ouvrir le memory mapped file j'obtiens effectivement un access
denied.
Par contre je ne comprend pas pourquoi les message postmessages ne passent
pas.
J'ai bien entendu effectué des tests avec une application qui monte la DLL
en remplacement du service web et dans ce cas tout va bien.
Pour le moment je tourne sur la machine de dev et c'est un IIS 5
Oui Network service.
Je vais faire un test avec un autre compte.
Si tu penses qu'il y a une meilleure méthode de communication IPC je suis
preneur car pour le moment il n'y a que du maquettage de réalisé, alors il
est encore temps de prendre une meilleure direction.
Bye
"Nicolas Diétrich" a écrit :
Bonjour
Ton mécanisme d'IPC est discutable, mais ton problème est surement lié à
l'identité du process IIS en jeu.
Que te rend l'accès à ton memory mapped file? Un access denied?
Ton webservice tourne sur IIS5? Quelle isolation est utilisée alors?
IIS6? Quelle est l'identité de ton application pool? Network service? Fais
déjà un test avec un utilisateur plus privilégié que Network Service voir si
cela fonctionne.
--
Nicolas Diétrich
Developer Support Escalation Engineer
Microsoft France
"AlanG" a écrit :
> Bonjour.
>
> Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit
> communiquer avec un programme Win 32 tournant sur la même machine. Nous avons
> donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32.
> La DLL win32 communique avec le programme Win 32 par 2 méthodes :
> postmessage et un fichier mappé mémoire.
> Le web service quant à lui fait appel à une fonction de la DLL win32 qui se
> charge de réaliser l'ensemble du traitement. Cela marche très bien sous
> VS2005 lorsque le service web est réalisé à partir de fichier. Par contre
> l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess
> ne passe ( ni postmessage ni l'accès au fichier mappé mémoire).
> Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et
> sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le
> Web service et le programme Win32 ?
>
> Merci d'avance pour vos réponses
>
Ce mécanisme avait été pensé tout simplement par l'existence de la DLL win32 et du programme Win 32 qui communiquent comme cela. J'avais simplement pensé que d'appeler la DLL par le web service m'eviterait de redevelopper le traitement qu'elle réalise.
Quand je lance le service Web , qu'il instancie la DLL , qui elle même créé la mémory mapped file tout va bien. Maintenant si je lance le programme Win 32 qui va ouvrir le memory mapped file j'obtiens effectivement un access denied. Par contre je ne comprend pas pourquoi les message postmessages ne passent pas. J'ai bien entendu effectué des tests avec une application qui monte la DLL en remplacement du service web et dans ce cas tout va bien.
Pour le moment je tourne sur la machine de dev et c'est un IIS 5 Oui Network service. Je vais faire un test avec un autre compte.
Si tu penses qu'il y a une meilleure méthode de communication IPC je suis preneur car pour le moment il n'y a que du maquettage de réalisé, alors il est encore temps de prendre une meilleure direction.
Bye
"Nicolas Diétrich" a écrit :
Bonjour
Ton mécanisme d'IPC est discutable, mais ton problème est surement lié à l'identité du process IIS en jeu.
Que te rend l'accès à ton memory mapped file? Un access denied?
Ton webservice tourne sur IIS5? Quelle isolation est utilisée alors? IIS6? Quelle est l'identité de ton application pool? Network service? Fais déjà un test avec un utilisateur plus privilégié que Network Service voir si cela fonctionne.
-- Nicolas Diétrich Developer Support Escalation Engineer Microsoft France
"AlanG" a écrit :
> Bonjour. > > Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit > communiquer avec un programme Win 32 tournant sur la même machine. Nous avons > donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32. > La DLL win32 communique avec le programme Win 32 par 2 méthodes : > postmessage et un fichier mappé mémoire. > Le web service quant à lui fait appel à une fonction de la DLL win32 qui se > charge de réaliser l'ensemble du traitement. Cela marche très bien sous > VS2005 lorsque le service web est réalisé à partir de fichier. Par contre > l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess > ne passe ( ni postmessage ni l'accès au fichier mappé mémoire). > Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et > sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le > Web service et le programme Win32 ? > > Merci d'avance pour vos réponses >