2010-08-31 10 views
1

Mon code peut être trouvé ici c# asp.net FTP Error Je suis en train de télécharger un fichier à partir d'un serveur FTP lorsque j'essaie de le télécharger, il dit que je n'ai pas accès, je ai googler tout cela matin et n'ont pas eu de chance. Je suis allé dans le dossier désigné et ajouté Tout le monde avec des autorisations complètes en espérant qu'il me manquait un utilisateur et cela n'a pas fonctionné. J'ai essayé de donner des autorisations complètes à moi-même, utilisateur anonyme, service réseau, et quelques autres utilisateurs que j'ai trouvés. Je l'ai essayé d'utiliserASP.NET Accès non autorisé lors du téléchargement de fTP

<identity impersonate="true" /> 

et

<identity impersonate="true" userName="myfullusername" password="mypassword"/> 

Je suis toujours de ne pas avoir de chance l'erreur complète que je reçois est:

System.UnauthorizedAccessException: L'accès au chemin « C: \ Users \ myname \ Documents 'est refusé. à System.IO .__ Error.WinIOError (code d'erreur Int32, String maybeFullPath) à System.IO.FileStream.Init (chemin d'accès String, mode FileMode, accès FileAccess, droits Int32, Boolean useRights, partage FileShare, Int32 bufferSize, options FileOptions, SECURITY_ATTRIBUTES secAttrs , String msgPath, Boolean bFromProxy, Boolean useLongPath)

toute aide que je reçois est grandement appréciée Merci à tous.

+0

Ce chemin est-il un chemin local ou le chemin d'accès au fichier distant? Pouvez-vous télécharger le fichier manuellement en utilisant un client FTP? –

+0

le chemin est un chemin local, et je peux le télécharger en utilisant FileZilla – h34dhun73r

Répondre

1

Je suppose que l'erreur est due à la création d'un flux de fichier sur un chemin qui est un dossier. Vérifiez la ligne où vous construisez votre FileStream avec un débogueur pour voir ce qui se passe dans

Voici un exemple que je courais sur ma machine.

// "Access to the path 'C:\users\myid\Documents' is denied." 
var nostream = new System.IO.FileStream(@"C:\users\myid\Documents", FileMode.Create); 

// OK 
var okstream = new System.IO.FileStream(@"C:\users\myid\Documents\myfile.txt", FileMode.Create); 

Par par, et vous savez peut-être, vous pouvez facilement combiner des chemins sans avoir à vous soucier de la direction de la barre oblique, ou si le côté gauche a une barre oblique, en utilisant System.IO.Path.

Path.Combine(@"C:\users\myid\Documents", "myfile.txt"); 

J'espère que cela aide. Bonne chance!

+0

et c'est encore une fois merci pour votre aide 2x maintenant dans une rangée kbrimington. :) – h34dhun73r

+0

@ h34dhun73r - Mon plaisir. Bonne chance! – kbrimington

0

Faire des choses à l'intérieur d'un profil d'utilisateur quand vous n'êtes pas l'utilisateur est généralement un peu difficile - il y a quelques paramètres de sécurité qui le protègent plutôt que de donner accès à tout le monde. Y at-il une raison pour laquelle il doit être dans votre dossier Documents ou peut-il atterrir ailleurs sur le disque.

+0

Désolé si ce n'était pas clair, il allait dans mon dossier d'utilisateur, mais la raison pour laquelle il ne fonctionnait pas était mon fichier filestream mal formaté. J'ai donné accès à tous les utilisateurs pour voir si VS usurpait l'identité d'un utilisateur que je n'utilisais pas (à partir de google) et cela ne fonctionnait pas. Cependant, les deux problèmes retourneront la même erreur, il peut donc être un peu ambigu, ce qui sera source de confusion pour la plupart des gens qui google l'erreur. – h34dhun73r