2010-01-19 6 views
0

Je voudrais savoir si je le code correctement. Pour télécharger le fichier manuellement sur le serveur de mon lieu de travail, je dois utiliser l'identifiant de connexion et le mot de passe. Avec le code ci-dessous, dois-je également inclure mon ID de connexion et mon mot de passe?WebClient Télécharger le fichier sur le Web

public void SaveLogsToWeb(string logFileName) 
    { 
     WebClient webClient = new WebClient(); 
     string webAddress = null; 
     try 
     { 
      webAddress = @"http://myCompany/ShareDoc/"; 

      webClient.Credentials = CredentialCache.DefaultCredentials; 

      WebRequest serverRequest = WebRequest.Create(webAddress); 
      WebResponse serverResponse; 
      serverResponse = serverRequest.GetResponse(); 
      serverResponse.Close(); 

      webClient.UploadFile(webAddress + logFileName, "PUT", logFileName); 
      webClient.Dispose(); 
      webClient = null; 
     } 
     catch (Exception error) 
     { 
      MessageBox.Show(error.Message); 
     } 
    } 

Quand je lance, exception lance "(401) non autorisée"

merci.

+1

Est-ce une application web ou une application console ? – sestocker

+0

il s'agit d'une application de formulaire Windows. – Bopha

Répondre

1

Vous ne devez jamais inclure d'informations utilisateur/mot de passe dans un fichier de code. La raison pour laquelle cela génère un 401 est que l'internaute et le pool d'applications sous lequel il s'exécute n'ont pas d'autorisations d'écriture sur le répertoire dans lequel vous essayez d'écrire.

Cliquez avec le bouton droit sur le répertoire et ajoutez/ASPNET et/Network Service en tant qu'utilisateurs avec l'autorisation d'écriture. Cela devrait éclaircir le problème. Assurez-vous d'isoler le répertoire.

Voici un bon article de msdn sur elle: http://support.microsoft.com/kb/815153

+0

merci pour l'info. Je lirai quand je rentrerai à la maison. Merci encore. – Bopha

+0

Après avoir suivi le lien fourni, il ne mentionne que ASPNET, mais j'utilise C# pour télécharger le fichier sur le Web. Voici la partie que je ne comprends pas. Avant que cela fonctionne avec le code ci-dessus, mais quand j'exécute le même programme à nouveau, il se plaint de non autorisé. – Bopha

+0

Oui, l'extrait de code ci-dessus fonctionne, mais l'autorisation n'est pas basée sur le code que vous avez ci-dessus. C'est au niveau du système IIS/File. 401 est toujours lorsque le serveur Web n'a pas l'autorisation d'effectuer l'action sur le système de fichiers local. Typiquement, cela implique un accès "en lecture" manquant, mais dans ce cas, vous essayez une écriture réelle, de sorte que le processus Web sur le serveur nécessite de nouvelles autorisations d'écriture. –

0

Très tard peut-être, mais vous pouvez ajouter ces 2 lignes avant webClient.Upload.. pour l'obtenir fixé:

webClient.Headers["Accept"] = "/"; 
webClient.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 
Questions connexes