2010-05-14 1 views
1

OK J'ai vu quelques personnes avec ce problème - mais j'utilise déjà un chemin de fichier, pas un chemin relatif. Mon code fonctionne correctement sur mon PC, mais lorsqu'un autre développeur télécharge une image, il obtient cette erreur. Je pensais que c'était une chose d'autorisation de sécurité sur le dossier - mais le compte système a un accès complet au dossier (même si je suis confus sur la façon de tester quel compte l'application est en cours d'exécution). De plus en cours d'exécution ne place généralement vous donne pas souvent trop de problèmes de sécurité :)La méthode SaveAs est configurée pour requérir un chemin racine et le chemin <blah> n'est pas rooté

Un extrait de code:

 Guid fileIdentifier = Guid.NewGuid(); 
     CurrentUserInfo currentUser = CMSContext.CurrentUser; 
     string identifier = currentUser.UserName.Replace(" ", "") + "_" + fileIdentifier.ToString(); 
     string fileName1 = System.IO.Path.GetFileName(fileUpload.PostedFile.FileName); 
     string Name = System.IO.Path.GetFileNameWithoutExtension(fileName1); 
     string renamedFile = fileName1.Replace(Name, identifier); 
     string path = ConfigurationManager.AppSettings["MemberPhotoRepository"]; 

     String filenameToWriteTo = path + currentUser.UserName.Replace(" ", "") + fileName1; 
     fileUpload.PostedFile.SaveAs(filenameToWriteTo); 

Si ma valeur des paramètres de configuration est:

Encore une fois cela fonctionne très bien sur mon PC ! (Et j'ai vérifié l'autre personne a le dossier sur leur PC).

Toutes les suggestions seraient appréciés - merci :)

Répondre

0

Vous ne savez pas quel était le problème, car il a été résolu. Nous n'avons pas fini de le déboguer comme c'était le cas sur un PC non-développeur et j'avais une solution pour lui permettre de continuer son travail pendant que j'examinais les causes potentielles. Alors peut-être était la façon dont il a mis à jour/a couru le site ou les autorisations de fichier fixées en saisissant une copie de mon répertoire. Au moins, je sais qu'il a besoin de chemins de fichiers physiques, donc j'espère ne pas rencontrer à nouveau cela!

0

De toute évidence, ce qu'il dit est que votre filenameToWriteTo est pas un chemin enraciné ... à savoir qu'il est un chemin relatif, et la configuration de votre serveur ne fonctionne pas comme ça. Utilisez Server.MapPath pour obtenir des chemins réels ... quelque chose comme ...

string realPhysicalPath = Path.Combine(Server.MapPath(" "), filenameToWriteTo); 
fileUpload.PostedFile.SaveAs(realPhysicalPath); 

Juste au cas où imprimer votre filenameToWriteTo pour voir si son chemin relatif ou physique. Si c'est relatif, utilisez l'approche ci-dessus.

+0

Merci - mais ma valeur de configuration était un chemin de fichier physique - donc c'était un vrai chemin. Désolé, un collage de copie a échoué, il n'aurait donc pas été évident qu'il contenait un chemin de fichier physique :) – Jen

0

Veuillez vous assurer que le dossier dans lequel vous enregistrez le fichier existe. Si le dossier n'existe pas, il ne sera pas créé pour vous et la méthode SaveAs lancera l'exception que vous rencontrez actuellement.

Merci.

Questions connexes