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

Probleme depuis l'installation du SP1 pour .Net 1.1

3 réponses
Avatar
Julien
Bonjour,

j'ai un petit problème avec l'application que je développe actuellement. Depuis
mon dernier Windows Update qui a mis à jour .NET 1.1 SP1, mon application ne
fonctionne plus.

J'ai une application cliente et une application serveur.

Le client crée un HttpWebRequest avec les parametres suivant:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);

webRequest.Method = "POST";
webRequest.ContentType = "text/xml";
webRequest.AllowWriteStreamBuffering = true;

et serialize de l'xml dans le stream du HttpWebRequest:

Stream stream = webRequest.GetRequestStream();
XmlTextWriter xml = new XmlTextWriter(stream, _encoding);

// ecriture dans le XmlTextWritter
// ...

xml.Close();

Ce code coté client fonctionne bien, et les données sont bien envoyées. J'ai
testé sur un petit serveur d'écoute qui affiche tous se qu'il recoit et tout
est ok.

Le serveur quant à lui, écoute sur le port, fait un parsing de l'header Http
puis deserialise l'xml serialise par le client. Voici le code:

TcpClient client = _listener.AcceptTcpClient();
StreamReader reader = client.GetStream();
StrealWritter writter= client.GetStream();

// Lit l'HTTP header à coup de reader.ReadLine();
// ...
// OK: la lecture de l'header HTTP ne pause aucun probleme.

// KO: le constructeur XmlTextReader timeout.
XmlTextReader xml = new XmlTextReader(reader);

Le probleme vient ici du constructeur XmlTextReader() qui timeout sur la
lecture du StreamReader. En regardant plus en detail, XmlTextReader() lis le
stream octect par octet (il ne fait pas de ReadLine()), et semble "timouter"
dessus. Dès que je ferme mon application cliente, XmlTextReader rend la main et
lis le flux xml sans probleme. Ce code fonctionnait parfaitement bien sur le
framework 1.1 lorsque le SP1 n'était pas installé. Quelqu'un a - t - il
rencontré ce genre de problème ?

Cordialement,
Julien.

3 réponses

Avatar
Paul Bacelar
Cela semble être le symptôme de la fenêtre stupide de TCP/IP.

Avez-vous regardé le traffic réseau avec un sniffer type ethereal pour voir
si ce n'est pas le client qui n'envoie pas les données à temps pour utiliser
à fin les ressources réseaux.

Il y peut-être un changement de politique par défaut des sockets du
FrameWork.
--
Paul Bacelar
Demandeur d'emploi


"Julien" wrote in message
news:#
Bonjour,

j'ai un petit problème avec l'application que je développe actuellement.


Depuis
mon dernier Windows Update qui a mis à jour .NET 1.1 SP1, mon application


ne
fonctionne plus.

J'ai une application cliente et une application serveur.

Le client crée un HttpWebRequest avec les parametres suivant:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);

webRequest.Method = "POST";
webRequest.ContentType = "text/xml";
webRequest.AllowWriteStreamBuffering = true;

et serialize de l'xml dans le stream du HttpWebRequest:

Stream stream = webRequest.GetRequestStream();
XmlTextWriter xml = new XmlTextWriter(stream, _encoding);

// ecriture dans le XmlTextWritter
// ...

xml.Close();

Ce code coté client fonctionne bien, et les données sont bien envoyées.


J'ai
testé sur un petit serveur d'écoute qui affiche tous se qu'il recoit et


tout
est ok.

Le serveur quant à lui, écoute sur le port, fait un parsing de l'header


Http
puis deserialise l'xml serialise par le client. Voici le code:

TcpClient client = _listener.AcceptTcpClient();
StreamReader reader = client.GetStream();
StrealWritter writter= client.GetStream();

// Lit l'HTTP header à coup de reader.ReadLine();
// ...
// OK: la lecture de l'header HTTP ne pause aucun probleme.

// KO: le constructeur XmlTextReader timeout.
XmlTextReader xml = new XmlTextReader(reader);

Le probleme vient ici du constructeur XmlTextReader() qui timeout sur la
lecture du StreamReader. En regardant plus en detail, XmlTextReader() lis


le
stream octect par octet (il ne fait pas de ReadLine()), et semble


"timouter"
dessus. Dès que je ferme mon application cliente, XmlTextReader rend la


main et
lis le flux xml sans probleme. Ce code fonctionnait parfaitement bien sur


le
framework 1.1 lorsque le SP1 n'était pas installé. Quelqu'un a - t - il
rencontré ce genre de problème ?

Cordialement,
Julien.



Avatar
Julien
> Cela semble être le symptôme de la fenêtre stupide de TCP/IP.

Avez-vous regardé le traffic réseau avec un sniffer type ethereal pour voir
si ce n'est pas le client qui n'envoie pas les données à temps pour utiliser
à fin les ressources réseaux.




Je n'ai pas regardé avec un sniffer réseau mais avec un outils (netcat) qui
écoutait sur le port et affichait se qu'il recevait. L'intégralité des mes
données étaient bien envoyées. C'est la lecture octet par octet sur le stream
qui est bloquant. Par contre, si je termine avec un n et que je lis avec
ReadLine(), celui-ci me renvoie bien les informations.

Il y peut-être un changement de politique par défaut des sockets du
FrameWork.



Peut être, mais je n'ai pas trouvé d'informations à ce sujet sur le site de
Microsoft.

Cordialement.

Julien.
Avatar
Stephen Gutknecht \(RoundSparrow\)
Sorry, I know only English and not French.

This problem seems to be new in SP1 and also impacts jabber-net. There is a
English posting:

newsgroup: microsoft.public.dotnet.xml
Thread subject: "Reading XML from Stream - Change with .NET 1.1 SP1?"
Thread started: September 7, 2004

Stephen Gutknecht
Arica, Chile



"Julien" wrote in message
news:%
Bonjour,

j'ai un petit problème avec l'application que je développe actuellement.
Depuis mon dernier Windows Update qui a mis à jour .NET 1.1 SP1, mon
application ne fonctionne plus.

J'ai une application cliente et une application serveur.

Le client crée un HttpWebRequest avec les parametres suivant:

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);

webRequest.Method = "POST";
webRequest.ContentType = "text/xml";
webRequest.AllowWriteStreamBuffering = true;

et serialize de l'xml dans le stream du HttpWebRequest:

Stream stream = webRequest.GetRequestStream();
XmlTextWriter xml = new XmlTextWriter(stream, _encoding);

// ecriture dans le XmlTextWritter
// ...

xml.Close();

Ce code coté client fonctionne bien, et les données sont bien envoyées.
J'ai testé sur un petit serveur d'écoute qui affiche tous se qu'il recoit
et tout est ok.

Le serveur quant à lui, écoute sur le port, fait un parsing de l'header
Http puis deserialise l'xml serialise par le client. Voici le code:

TcpClient client = _listener.AcceptTcpClient();
StreamReader reader = client.GetStream();
StrealWritter writter= client.GetStream();

// Lit l'HTTP header à coup de reader.ReadLine();
// ...
// OK: la lecture de l'header HTTP ne pause aucun probleme.

// KO: le constructeur XmlTextReader timeout.
XmlTextReader xml = new XmlTextReader(reader);

Le probleme vient ici du constructeur XmlTextReader() qui timeout sur la
lecture du StreamReader. En regardant plus en detail, XmlTextReader() lis
le stream octect par octet (il ne fait pas de ReadLine()), et semble
"timouter" dessus. Dès que je ferme mon application cliente, XmlTextReader
rend la main et lis le flux xml sans probleme. Ce code fonctionnait
parfaitement bien sur le framework 1.1 lorsque le SP1 n'était pas
installé. Quelqu'un a - t - il rencontré ce genre de problème ?

Cordialement,
Julien.