Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Asp.net => Réponses permutées

4 réponses
Avatar
ngtliem
Bonjour,

J'ai développé une application asp.net qui consite à recevoir des requêtes
en flux XML, les traiter, puis renvoyer la réponse ( toujours en flux XML )...
En global, tout se passe très bien, sauf un petit soucis ( de taille ) car
de temps en temps, l'application permute les réponses c.à.d qu'elle ne répond
pas au bon client.
Ex: Elle reçoit presqu'en même temps une requête ( en flux XML ) du client A
et une autre du client B. Elle les traite sans pb, mais elle envoie la
réponse destinée au client A à un autre client( en l'occurence client B ) et
inversement.
Ce pb ne se produit pas systématiquement, juste quelques cas dans la journée
mais me cause bcp de soucis car je travaille dans la production donc en temps
réel.

J'ai beau chercher mais je n'ai tourjours pas compris pourquoi.
Auriez vous une petite idée de ce qui se passe?

Merci d'avance

Je mets ici un petit résumé de mon code pour donner une idée...

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim xmlDoc As XmlDocument = Nothing

'Vider le contenu de la réponse
Response.Clear()

'Go...
Try
'Chargement initial...
xmlDoc.Load(New XmlTextReader(Request.InputStream))

'Analyser le flux xml
'Analyze => vérifie juste la validité du flux capté : données
Analyze(xmlDoc)
xmlDoc = Nothing

'Traitement...
'Traitement => retourne le résultat en XML
xmlDoc = Traitement()

Catch ex As Exception 'Pb...
'La procédure xmlError retourne une erreur en XML
xmlDoc = xmlError()

Finally 'Fin de traitement
'Répondre...
'xmlDocumentToStr => retourne le résultat en text
Response.ContentType = "text/xml"
Response.Write(xmlDocumentToStr(xmlDoc))

'RAZ
xmlDoc = Nothing

'Mettre fin de la réponse
Response.End()
End Try

End Sub


* Du coté client, comment les flux XML sont construits et envoyés, celà ne
nous concerne pas car c'est une autre entité de production qui assure la
conception de ce programme. Mais une chose est sure c'est que mon programme
capte parfaitement bien ces flux.

* Le serveur IIS est un Dual Core et l'application a été écrite en vb.net

4 réponses

Avatar
Patrice
Il y a des variables Shared ? Comment Traitement() récupère les données ? Je
m'attendais plutôt à ce que l'on lui passe le xmlDoc qui a déjà eté lu par
exemple...

"ngtliem" a écrit dans le message de
groupe de discussion :


Bonjour,

J'ai développé une application asp.net qui consite à recevoir des requêtes
en flux XML, les traiter, puis renvoyer la réponse ( toujours en flux
XML )...
En global, tout se passe très bien, sauf un petit soucis ( de taille ) car
de temps en temps, l'application permute les réponses c.à.d qu'elle ne
répond
pas au bon client.
Ex: Elle reçoit presqu'en même temps une requête ( en flux XML ) du client
A
et une autre du client B. Elle les traite sans pb, mais elle envoie la
réponse destinée au client A à un autre client( en l'occurence client B )
et
inversement.
Ce pb ne se produit pas systématiquement, juste quelques cas dans la
journée
mais me cause bcp de soucis car je travaille dans la production donc en
temps
réel.

J'ai beau chercher mais je n'ai tourjours pas compris pourquoi.
Auriez vous une petite idée de ce qui se passe?

Merci d'avance

Je mets ici un petit résumé de mon code pour donner une idée...

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim xmlDoc As XmlDocument = Nothing

'Vider le contenu de la réponse
Response.Clear()

'Go...
Try
'Chargement initial...
xmlDoc.Load(New XmlTextReader(Request.InputStream))

'Analyser le flux xml
'Analyze => vérifie juste la validité du flux capté : données
Analyze(xmlDoc)
xmlDoc = Nothing

'Traitement...
'Traitement => retourne le résultat en XML
xmlDoc = Traitement()

Catch ex As Exception 'Pb...
'La procédure xmlError retourne une erreur en XML
xmlDoc = xmlError()

Finally 'Fin de traitement
'Répondre...
'xmlDocumentToStr => retourne le résultat en text
Response.ContentType = "text/xml"
Response.Write(xmlDocumentToStr(xmlDoc))

'RAZ
xmlDoc = Nothing

'Mettre fin de la réponse
Response.End()
End Try

End Sub


* Du coté client, comment les flux XML sont construits et envoyés, celà ne
nous concerne pas car c'est une autre entité de production qui assure la
conception de ce programme. Mais une chose est sure c'est que mon
programme
capte parfaitement bien ces flux.

* Le serveur IIS est un Dual Core et l'application a été écrite en vb.net




Avatar
ngtliem
Bonjour Patrice,

Effectivement, on passe en paramètre xmlDoc dans la procédure Traitement(
xmlDoc ). Excusez-moi donc, c'est un résumé d'où cette erreur. Voici le code
corrigé :

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim xmlDoc As XmlDocument = Nothing

'Vider le contenu de la réponse
Response.Clear()

'Go...
Try
'Chargement initial...
xmlDoc.Load(New XmlTextReader(Request.InputStream))

'Analyser le flux xml
'Analyze => vérifie juste la validité du flux capté : données
Analyze(xmlDoc)
'xmlDoc = Nothing

'Traitement...
'Traitement => retourne le résultat en XML
xmlDoc = Traitement(xmlDoc)

Catch ex As Exception 'Pb...
'La procédure xmlError retourne une erreur en XML
xmlDoc = xmlError()

Finally 'Fin de traitement
'Répondre...
'xmlDocumentToStr => retourne le résultat en text
Response.ContentType = "text/xml"
Response.Write(xmlDocumentToStr(xmlDoc))

'RAZ
xmlDoc = Nothing

'Mettre fin de la réponse
Response.End()
End Try

End Sub

Merci pour votre remarque. Si vous aviez une petite idée merci de la poster.
Merci encore

* Une petite chose, après un IISReset, tout semble redevenir normal.




"Patrice" wrote:

Il y a des variables Shared ? Comment Traitement() récupère les données ? Je
m'attendais plutôt à ce que l'on lui passe le xmlDoc qui a déjà eté lu par
exemple...

"ngtliem" a écrit dans le message de
groupe de discussion :
>
>
> Bonjour,
>
> J'ai développé une application asp.net qui consite à recevoir des requêtes
> en flux XML, les traiter, puis renvoyer la réponse ( toujours en flux
> XML )...
> En global, tout se passe très bien, sauf un petit soucis ( de taille ) car
> de temps en temps, l'application permute les réponses c.à.d qu'elle ne
> répond
> pas au bon client.
> Ex: Elle reçoit presqu'en même temps une requête ( en flux XML ) du client
> A
> et une autre du client B. Elle les traite sans pb, mais elle envoie la
> réponse destinée au client A à un autre client( en l'occurence client B )
> et
> inversement.
> Ce pb ne se produit pas systématiquement, juste quelques cas dans la
> journée
> mais me cause bcp de soucis car je travaille dans la production donc en
> temps
> réel.
>
> J'ai beau chercher mais je n'ai tourjours pas compris pourquoi.
> Auriez vous une petite idée de ce qui se passe?
>
> Merci d'avance
>
> Je mets ici un petit résumé de mon code pour donner une idée...
>
> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles Me.Load
> Dim xmlDoc As XmlDocument = Nothing
>
> 'Vider le contenu de la réponse
> Response.Clear()
>
> 'Go...
> Try
> 'Chargement initial...
> xmlDoc.Load(New XmlTextReader(Request.InputStream))
>
> 'Analyser le flux xml
> 'Analyze => vérifie juste la validité du flux capté : données
> Analyze(xmlDoc)
> xmlDoc = Nothing
>
> 'Traitement...
> 'Traitement => retourne le résultat en XML
> xmlDoc = Traitement()
>
> Catch ex As Exception 'Pb...
> 'La procédure xmlError retourne une erreur en XML
> xmlDoc = xmlError()
>
> Finally 'Fin de traitement
> 'Répondre...
> 'xmlDocumentToStr => retourne le résultat en text
> Response.ContentType = "text/xml"
> Response.Write(xmlDocumentToStr(xmlDoc))
>
> 'RAZ
> xmlDoc = Nothing
>
> 'Mettre fin de la réponse
> Response.End()
> End Try
>
> End Sub
>
>
> * Du coté client, comment les flux XML sont construits et envoyés, celà ne
> nous concerne pas car c'est une autre entité de production qui assure la
> conception de ce programme. Mais une chose est sure c'est que mon
> programme
> capte parfaitement bien ces flux.
>
> * Le serveur IIS est un Dual Core et l'application a été écrite en vb.net
>
>




Avatar
Patrice
La seule chose que j'imagine pour l'instant est l'utilisation de variables
"shared" qui sont accessibles par tous les utilisateurs et non pas propres à
chaque utilisateur....

--
Patrice

"ngtliem" a écrit dans le message de
groupe de discussion :

Bonjour Patrice,

Effectivement, on passe en paramètre xmlDoc dans la procédure Traitement(
xmlDoc ). Excusez-moi donc, c'est un résumé d'où cette erreur. Voici le
code
corrigé :

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim xmlDoc As XmlDocument = Nothing

'Vider le contenu de la réponse
Response.Clear()

'Go...
Try
'Chargement initial...
xmlDoc.Load(New XmlTextReader(Request.InputStream))

'Analyser le flux xml
'Analyze => vérifie juste la validité du flux capté : données
Analyze(xmlDoc)
'xmlDoc = Nothing

'Traitement...
'Traitement => retourne le résultat en XML
xmlDoc = Traitement(xmlDoc)

Catch ex As Exception 'Pb...
'La procédure xmlError retourne une erreur en XML
xmlDoc = xmlError()

Finally 'Fin de traitement
'Répondre...
'xmlDocumentToStr => retourne le résultat en text
Response.ContentType = "text/xml"
Response.Write(xmlDocumentToStr(xmlDoc))

'RAZ
xmlDoc = Nothing

'Mettre fin de la réponse
Response.End()
End Try

End Sub

Merci pour votre remarque. Si vous aviez une petite idée merci de la
poster.
Merci encore

* Une petite chose, après un IISReset, tout semble redevenir normal.




"Patrice" wrote:

Il y a des variables Shared ? Comment Traitement() récupère les données ?
Je
m'attendais plutôt à ce que l'on lui passe le xmlDoc qui a déjà eté lu
par
exemple...

"ngtliem" a écrit dans le message de
groupe de discussion :

>
>
> Bonjour,
>
> J'ai développé une application asp.net qui consite à recevoir des
> requêtes
> en flux XML, les traiter, puis renvoyer la réponse ( toujours en flux
> XML )...
> En global, tout se passe très bien, sauf un petit soucis ( de taille )
> car
> de temps en temps, l'application permute les réponses c.à.d qu'elle ne
> répond
> pas au bon client.
> Ex: Elle reçoit presqu'en même temps une requête ( en flux XML ) du
> client
> A
> et une autre du client B. Elle les traite sans pb, mais elle envoie la
> réponse destinée au client A à un autre client( en l'occurence client
> B )
> et
> inversement.
> Ce pb ne se produit pas systématiquement, juste quelques cas dans la
> journée
> mais me cause bcp de soucis car je travaille dans la production donc en
> temps
> réel.
>
> J'ai beau chercher mais je n'ai tourjours pas compris pourquoi.
> Auriez vous une petite idée de ce qui se passe?
>
> Merci d'avance
>
> Je mets ici un petit résumé de mon code pour donner une idée...
>
> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles Me.Load
> Dim xmlDoc As XmlDocument = Nothing
>
> 'Vider le contenu de la réponse
> Response.Clear()
>
> 'Go...
> Try
> 'Chargement initial...
> xmlDoc.Load(New XmlTextReader(Request.InputStream))
>
> 'Analyser le flux xml
> 'Analyze => vérifie juste la validité du flux capté :
> données
> Analyze(xmlDoc)
> xmlDoc = Nothing
>
> 'Traitement...
> 'Traitement => retourne le résultat en XML
> xmlDoc = Traitement()
>
> Catch ex As Exception 'Pb...
> 'La procédure xmlError retourne une erreur en XML
> xmlDoc = xmlError()
>
> Finally 'Fin de traitement
> 'Répondre...
> 'xmlDocumentToStr => retourne le résultat en text
> Response.ContentType = "text/xml"
> Response.Write(xmlDocumentToStr(xmlDoc))
>
> 'RAZ
> xmlDoc = Nothing
>
> 'Mettre fin de la réponse
> Response.End()
> End Try
>
> End Sub
>
>
> * Du coté client, comment les flux XML sont construits et envoyés, celà
> ne
> nous concerne pas car c'est une autre entité de production qui assure
> la
> conception de ce programme. Mais une chose est sure c'est que mon
> programme
> capte parfaitement bien ces flux.
>
> * Le serveur IIS est un Dual Core et l'application a été écrite en
> vb.net
>
>






Avatar
ngtliem
Salut Patrice,

Merci d'avoir soufflé. J'ai effectivement trouvé une variable shared, couplé
avec les logs depuis 2 semaines, ça correspond bien au pb.

On a corrigé le programme et ça repart...

Merci encore pour votre aide.


"Patrice" wrote:

La seule chose que j'imagine pour l'instant est l'utilisation de variables
"shared" qui sont accessibles par tous les utilisateurs et non pas propres à
chaque utilisateur....

--
Patrice

"ngtliem" a écrit dans le message de
groupe de discussion :
>
> Bonjour Patrice,
>
> Effectivement, on passe en paramètre xmlDoc dans la procédure Traitement(
> xmlDoc ). Excusez-moi donc, c'est un résumé d'où cette erreur. Voici le
> code
> corrigé :
>
> Protected Sub Page_Load(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles Me.Load
> Dim xmlDoc As XmlDocument = Nothing
>
> 'Vider le contenu de la réponse
> Response.Clear()
>
> 'Go...
> Try
> 'Chargement initial...
> xmlDoc.Load(New XmlTextReader(Request.InputStream))
>
> 'Analyser le flux xml
> 'Analyze => vérifie juste la validité du flux capté : données
> Analyze(xmlDoc)
> 'xmlDoc = Nothing
>
> 'Traitement...
> 'Traitement => retourne le résultat en XML
> xmlDoc = Traitement(xmlDoc)
>
> Catch ex As Exception 'Pb...
> 'La procédure xmlError retourne une erreur en XML
> xmlDoc = xmlError()
>
> Finally 'Fin de traitement
> 'Répondre...
> 'xmlDocumentToStr => retourne le résultat en text
> Response.ContentType = "text/xml"
> Response.Write(xmlDocumentToStr(xmlDoc))
>
> 'RAZ
> xmlDoc = Nothing
>
> 'Mettre fin de la réponse
> Response.End()
> End Try
>
> End Sub
>
> Merci pour votre remarque. Si vous aviez une petite idée merci de la
> poster.
> Merci encore
>
> * Une petite chose, après un IISReset, tout semble redevenir normal.
>
>
>
>
> "Patrice" wrote:
>
>> Il y a des variables Shared ? Comment Traitement() récupère les données ?
>> Je
>> m'attendais plutôt à ce que l'on lui passe le xmlDoc qui a déjà eté lu
>> par
>> exemple...
>>
>> "ngtliem" a écrit dans le message de
>> groupe de discussion :
>>
>> >
>> >
>> > Bonjour,
>> >
>> > J'ai développé une application asp.net qui consite à recevoir des
>> > requêtes
>> > en flux XML, les traiter, puis renvoyer la réponse ( toujours en flux
>> > XML )...
>> > En global, tout se passe très bien, sauf un petit soucis ( de taille )
>> > car
>> > de temps en temps, l'application permute les réponses c.à.d qu'elle ne
>> > répond
>> > pas au bon client.
>> > Ex: Elle reçoit presqu'en même temps une requête ( en flux XML ) du
>> > client
>> > A
>> > et une autre du client B. Elle les traite sans pb, mais elle envoie la
>> > réponse destinée au client A à un autre client( en l'occurence client
>> > B )
>> > et
>> > inversement.
>> > Ce pb ne se produit pas systématiquement, juste quelques cas dans la
>> > journée
>> > mais me cause bcp de soucis car je travaille dans la production donc en
>> > temps
>> > réel.
>> >
>> > J'ai beau chercher mais je n'ai tourjours pas compris pourquoi.
>> > Auriez vous une petite idée de ce qui se passe?
>> >
>> > Merci d'avance
>> >
>> > Je mets ici un petit résumé de mon code pour donner une idée...
>> >
>> > Protected Sub Page_Load(ByVal sender As Object, ByVal e As
>> > System.EventArgs) Handles Me.Load
>> > Dim xmlDoc As XmlDocument = Nothing
>> >
>> > 'Vider le contenu de la réponse
>> > Response.Clear()
>> >
>> > 'Go...
>> > Try
>> > 'Chargement initial...
>> > xmlDoc.Load(New XmlTextReader(Request.InputStream))
>> >
>> > 'Analyser le flux xml
>> > 'Analyze => vérifie juste la validité du flux capté :
>> > données
>> > Analyze(xmlDoc)
>> > xmlDoc = Nothing
>> >
>> > 'Traitement...
>> > 'Traitement => retourne le résultat en XML
>> > xmlDoc = Traitement()
>> >
>> > Catch ex As Exception 'Pb...
>> > 'La procédure xmlError retourne une erreur en XML
>> > xmlDoc = xmlError()
>> >
>> > Finally 'Fin de traitement
>> > 'Répondre...
>> > 'xmlDocumentToStr => retourne le résultat en text
>> > Response.ContentType = "text/xml"
>> > Response.Write(xmlDocumentToStr(xmlDoc))
>> >
>> > 'RAZ
>> > xmlDoc = Nothing
>> >
>> > 'Mettre fin de la réponse
>> > Response.End()
>> > End Try
>> >
>> > End Sub
>> >
>> >
>> > * Du coté client, comment les flux XML sont construits et envoyés, celà
>> > ne
>> > nous concerne pas car c'est une autre entité de production qui assure
>> > la
>> > conception de ce programme. Mais une chose est sure c'est que mon
>> > programme
>> > capte parfaitement bien ces flux.
>> >
>> > * Le serveur IIS est un Dual Core et l'application a été écrite en
>> > vb.net
>> >
>> >
>>
>>