2012-08-29 5 views
0

J'ai trouvé beaucoup de questions sur (401) Erreur non autorisée, mais aucun d'entre eux ne m'a expliqué comment diagnostiquer le problème."Le serveur distant a renvoyé une erreur: (401) Erreur" non autorisée "lors du téléchargement d'un fichier

J'ai créé une nouvelle application MVC ASP.net pour apprendre à télécharger un fichier dans un dossier sharepoint. A partir de ce moment semble, je ne peux pas être en mesure de copier un fichier à partir C: \ testfolder \ file.txt à C: \ testfolder \ Uploadedfiles

Voici la méthode que je faisais où j'envoie le chemin du fichier source et le dossier cible:

//Flag to indicate whether file was uploaded successfuly or not 
     bool isUploaded = true; 
     try 
     { 
      // Create a PUT Web request to upload the file. 
      WebRequest request = WebRequest.Create(targetDocumentLibraryPath); 

      //Set credentials of the current security context 
      request.PreAuthenticate = true; 
      request.UseDefaultCredentials = true; 
      ICredentials credentials = new NetworkCredential("Username", "password", "Domain"); //I used my username and password here 
      request.Credentials = credentials; 
      //request.Credentials = CredentialCache.DefaultCredentials; 
      request.Method = "PUT"; 

      // Create buffer to transfer file 
      byte[] fileBuffer = new byte[1024]; 

      // Write the contents of the local file to the request stream. 
      using (Stream stream = request.GetRequestStream()) 
      { 
       //Load the content from local file to stream 
       using (FileStream fsWorkbook = File.Open(sourceFilePath, FileMode.Open, FileAccess.Read)) 
       { 
        //Get the start point 
        int startBuffer = fsWorkbook.Read(fileBuffer, 0, fileBuffer.Length); 
        for (int i = startBuffer; i > 0; i = fsWorkbook.Read(fileBuffer, 0, fileBuffer.Length)) 
        { 
         stream.Write(fileBuffer, 0, i); 
        } 

       } 
      } 

      // Perform the PUT request 
      WebResponse response = request.GetResponse(); 

      //Close response 
      response.Close(); 
     } 
     catch (Exception ex) 
     { 
      //Set the flag to indiacte failure in uploading 
      isUploaded = false; //The remote server returned an error: (401) Unauthorized. 
     } 

     //Return the final upload status 
     return isUploaded; 
    } 

j'ai essayé les éléments suivants:

  • Modification de l'autorisation des dossiers pour pouvoir écrire/lire les pour tous les utilisateurs.
  • Utilisez d'autres emplacements de dossier (SharePoint, lecteur local, lecteur réseau) pour télécharger le fichier.

Une idée sur comment faire pour que ce problème fonctionne? Toute perspective sur la façon de déboguer le problème est également appréciée.

Mise à jour: Il est probablement que mon compte est défini en tant que compte du pool d'applications dans IIS. Je ne suis toujours pas sûr de la nature du problème.

+1

Cette erreur signifie que vous n'êtes même pas autorisé à demander l'URL qui tente d'exécuter le fichier en mouvement ; cela n'a rien à voir avec le code de déplacement du fichier lui-même - ce code ne fonctionne même pas. –

+0

@AndrewBarber, je l'ai essayé avec des fichiers locaux pour copier sur mon disque C local sans succès. – Ammar

+1

Vous pouvez probablement essayer 'System.Net.CredentialCache.DefaultNetworkCredentials' – Romoku

Répondre

-3

j'ai décidé d'essayer une autre approche et l'utilisation httpposted fichier et .SaveAs() décrit here

1

Ce ne serait pas quelque chose comme les paramètres de proxy le ferait-il?

Avez-vous besoin d'ajouter le paramètre de proxy par défaut à votre

WebRequest 

Aussi avez-vous besoin d'ajouter

<system.net> 
    <defaultProxy useDefaultCredentials="true" /> 
</system.net> 

Pour votre config web?

Cela peut aider.

How should I set the default proxy to use default credentials?

Questions connexes