Erreur à l'aide de HttpWebRequest de télécharger des fichiers avec de METTRE

Nous avons un .NET 2.0 WinForms application à télécharger des fichiers sur un Serveur IIS6 via WebDav. De temps à autre, nous obtenons des plaintes à partir d'un bureau à distance qu'ils obtiennent l'un des messages d'erreur suivants

  • La connexion sous-jacente a été fermée:
    une erreur inattendue s'est produite lors de l'envoi.
  • La connexion sous-jacente a été fermée:
    une erreur inattendue s'est produite sur
    recevoir.

Cela ne semble se produire avec des fichiers de grande taille (~20 mo ou plus). Je l'ai testé avec un fichier de 40 mo à partir de mon ordinateur à la maison et essayé de les mettre à Dormir dans la boucle afin de simuler une connexion lente donc je pense que c'est vers le bas à des problèmes de réseau à leur fin... mais

  1. La au le bureau à distance ne sont d'aucune aide
  2. J'aimerais exclure la possibilité que mon code est en faute.

Soi - quelqu'un peut-il repérer toute misakes ou de suggérer des solutions de contournement qui peuvent "pare-balles", le code à l'encontre de ce problème. Merci pour toute aide. Coupés de version de code suivante:

    public bool UploadFile(string localFile, string uploadUrl)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uploadUrl);
try
{
req.Method = "PUT";
req.AllowWriteStreamBuffering = true;
req.UseDefaultCredentials = Program.WebService.UseDefaultCredentials;
req.Credentials = Program.WebService.Credentials;
req.SendChunked = false;
req.KeepAlive = true;
Stream reqStream = req.GetRequestStream();
FileStream rdr = new FileStream(localFile, FileMode.Open, FileAccess.Read);
byte[] inData = new byte[4096];
int bytesRead = rdr.Read(inData, 0, inData.Length);
while (bytesRead > 0)
{
reqStream.Write(inData, 0, bytesRead);
bytesRead = rdr.Read(inData, 0, inData.Length);
}
reqStream.Close();
rdr.Close();
System.Net.HttpWebResponse response = (HttpWebResponse)req.GetResponse();
if (response.StatusCode != HttpStatusCode.OK && response.StatusCode!=HttpStatusCode.Created)
{
MessageBox.Show("Couldn't upload file");
return false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
return true;
}
  • Ce webdav client et le serveur?
InformationsquelleAutor SillyMonkey | 2009-04-09