26 votes

Une exception s'est produite lors d'une requête WebClient" lors de l'utilisation de C# ASP.NET

J'ai donc intégré un programme de mise à jour automatique à mon programme.

Le code qui est exécuté ici est :

new WebClient().DownloadFile("XXXX", checkingfolder.SelectedPath);

le XXX est mon serveur web qui fonctionne comme un serveur VPS dans verio, avec le dernier IIS et tout.

Lorsque l'utilisateur clique sur le bouton de téléchargement, il est dit :

'An exception occurred during a WebClient request.

Le fait est que je ne sais même pas pourquoi - je fais juste des essais de capture.

Quelqu'un ici a une idée de la raison pour laquelle cela s'est produit ?

Merci pour toute l'aide que vous m'apporterez, vous n'avez pas idée de combien vous m'aidez ici - merci encore !

52voto

Marc Gravell Points 482669

Je peux reproduire ceci si je spécifie, comme semble pour être le cas dans votre exemple, un dossier plutôt qu'un nom fichier nommez la destination. Fournissez un fichier à la place.

En passant, si je regarde le InnerException il me dit que le problème est lié au chemin du fichier :

using(var client = new WebClient())
{
    try
    {
        client.DownloadFile(
            "http://stackoverflow.com/questions/8033619/an-exception-occurred-durning-a-webclient-request-c-sharp-asp-net/8033687#8033687",
            @"j:\MyPath");
    }
    catch (Exception ex)
    {
        while (ex != null)
        {
            Console.WriteLine(ex.Message);
            ex = ex.InnerException;
        }
    }
}

Ce qui donne :

An exception occurred during a WebClient request.
Access to the path 'j:\MyPath' is denied.

Si je le change en fichier il fonctionne bien :

client.DownloadFile(
    "http://stackoverflow.com/questions/8033619/an-exception-occurred-durning-a-webclient-request-c-sharp-asp-net/8033687#8033687",
    @"j:\MyPath\a.html");

3voto

jbird Points 31

Cette erreur peut parfois se produire lorsqu'une autre classe ou un autre processus accède au fichier que vous venez de télécharger.

2voto

Charlie Points 369

Il donne une exception, si le répertoire du chemin n'existe pas.

par exemple le chemin est @"j : \Folder\SubFolder\123.pdf et Sous-dossier n'existe pas, une exception sera levée.

2voto

Steve Points 240

J'ai rencontré cette erreur lorsque j'ai essayé de télécharger un fichier, où le chemin du fichier téléchargé résultant aurait été plus long qu'une certaine limite arbitraire.

Après avoir modifié le nom du chemin du fichier téléchargé pour qu'il comporte 250 caractères, le problème a disparu.

1voto

Julio Nobre Points 520

En plus d'autres réponses, faites attention que les mêmes WebException peut également se produire si le processus client n'a pas l'autorisation nécessaire pour créer le fichier de sortie.

Je vous suggère d'adopter la stratégie suivante :

  1. Télécharger le fichier vers un nom de fichier unique avec .tmp ( .txt ) prolonge le dossier temporaire de Windows pour éviter les problèmes d'écriture et d'autres permissions
  2. Déplacer le fichier temporaire vers le dossier de destination
  3. Renommer le fichier temporaire au nom de fichier de destination

J'espère que cela vous aidera :-)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X