2009-10-01 14 views

Répondre

1

Quelques idées:

  • faire les demandes de façon synchrone et voir si le problème disparaît. sinon, alors commencez à regarder de près ce troisième fichier (est-ce HUUUUUUUUUGE?)
  • assurez-vous que vous appelez explicitement FtpWebRequest.EndGetResponse() dans votre gestionnaire de rappel, puis en appelant Close() sur la réponse. Sinon, vous risquez de laisser les connexions ouvertes et de vous heurter aux limites de connexion du client, du serveur ou du proxy. Si vous êtes déjà en train de faire ces choses, installez un renifleur de réseau comme Network Monitor 3.3 et voyez ce qui se passe actuellement sur le réseau. Vous serez en mesure de voir les erreurs là-bas.
  • Si vous voyez des erreurs, traquez-les. Si vous ne voyez jamais la troisième requête, passez en revue les limites de connexion du client comme étant le coupable. Si vous voyez la troisième requête passer par le fil, mais pas de réponse, regardez un problème de serveur comme étrangler N demandes du même client dans M secondes-- et essayez de mettre un délai après chaque requête pour voir si vous pouvez éviter cela.
1

Merci pour votre réponse. J'ai découvert que mon problème était avec ServicePoint.Connection.Limit

J'ai augmenté cette valeur à 4 et j'ai commencé à utiliser les méthodes synchrones. Mon contenu FTP télécharge maintenant les fichiers dont j'ai besoin.

Cependant, bien que je puisse vérifier que mes fichiers atteignent le serveur intacte La méthode Close() sur le flux génère la plupart du temps une exception Web se plaignant que la connexion a été fermée.

J'ai essayé KeepAlive mais seulement réduit les exceptions pour environ 10% (très rugueux) des transferts.

J'ignore les erreurs car je suis en mesure de confirmer que les octets envoyés == le nombre total d'octets du fichier mais ce n'est pas gentlemanly.

Je ne sais pas trop comment contourner ce problème; J'ai passé des jours à googler et trouvé des gens avec des problèmes similaires mais pas de vraies réponses. Pour l'instant je dois continuer avec le reste de mon projet car le temps est court, Si vous avez des idées sur la façon d'empêcher la fermeture de la connexion sous-jacente (je suppose que c'est le canal de contrôle qui tombe) J'apprécierais vos idées.

John.