2010-09-10 16 views
0

J'essaye de faire un téléchargement de formulaire multipart simple en utilisant System.Net.WebClient et l'authentification de base.System.Net.WebClient "Impossible d'écrire des données sur la connexion de transport"

J'ai eu quelques problèmes avec ceci et ai utilisé Fiddler2 pour déboguer quelques erreurs 401 que j'ai eues avec le service.

Je suis arrivé le code ci-dessous, qui réussit tout Fiddler2 est en cours d'exécution, mais échoue quand il ne fonctionne pas, avec l'erreur suivante:

« Impossible d'écrire des données à la connexion de transport: est une connexion existante de force fermé par l'hôte distant. "

code

est la suivante:

var wc = new MyWebClient(); 
    var cc = new System.Net.CredentialCache(); 
    cc.Add(new Uri(uri), "Basic", new System.Net.NetworkCredential(user, pass)); 
    wc.Credentials = cc; 
    System.Net.ServicePointManager.Expect100Continue = false; 
    wc.UploadFile(uri + folder, file); 
    wc.DownloadString(uri + folder).Dump(); 
    return; 

class MyWebClient : System.Net.WebClient 
{ 
    protected override System.Net.WebRequest GetWebRequest(Uri address) 
    { 
     System.Net.WebRequest request = base.GetWebRequest(address); 
     if (request is System.Net.HttpWebRequest) 
     { 
      (request as System.Net.HttpWebRequest).KeepAlive = false; 
     } 
     return request; 
    } 
} 

Répondre

0

Vous désactivez rester en vie pendant que vous utilisez deux fois client. Je crois que c'est votre problème. Que se passe-t-il si vous supprimez le bit de téléchargement, en conservant uniquement le téléchargement?

MISE À JOUR

Je sais que l'utilisation/digest non basique implique un aller-retour et ne fonctionnera pas avec keep-alive ensemble à faux, mais pas sûr de base.

+0

Salut Aliostad, le téléchargement fonctionne très bien. Le téléchargement ne fonctionne pas, que le téléchargement soit présent ou non. Je suis en train d'essayer d'automatiser un téléchargement sur un formulaire simple, légèrement embarassé que quelque chose de si simple m'a fait stump. Pensé qu'il pourrait avoir quelque chose à faire avec PreAuthenticate et avoir essayé WebRequest par le blog de Rick Strahl @ http://www.west-wind.com/weblog/posts/243915.aspx – Aaron

+0

Je suis conscient des facteurs ci-dessus, mais ils ne ' Cela semble être le problème. Cependant, j'accepterai cette réponse car je suppose que c'est quelque chose d'idiosyncrasique avec la fonctionnalité WebDAV de http: //*.mysecurebackup.net/. C'est quelque chose que je voulais faire tourner afin que je puisse télécharger par programme sur mon JungleDisk via WebClient. Si quelqu'un voudrait accéder aux détails afin qu'ils puissent essayer/reproduire les éléments ci-dessus, je suis plus qu'heureux de les fournir, il suffit de me laisser tomber une ligne. – Aaron