2012-12-03 3 views
0

Salut, je semble avoir un problème lors du téléchargement des images dans asp.net.When I tryed pour télécharger une image que je reçois cette erreur:Télécharger accès à chemin images refusé

Access to the path 'D:\Projects IDE\Visual Studio\MyWork\Websites\Forum\Images\avatar\userAvatars\aleczandru' is denied.

J'ai mis des pools d'applications Identoty à NETWORKSERVICE eto également ajouté le compte NETWORK SERVICE dans le dossier Images avec une permissivité complète, mais j'ai toujours la même erreur.

Ceci est mon code:

private void addImageToApp() 
{ 
    string path = "~/Images/avatar/userAvatars/" + User.Identity.Name; 

    createPath(path); 
    if(Directory.Exists(HostingEnvironment.MapPath(path))) 
    { 
     //try { 
       UploadImage.SaveAs(HostingEnvironment.MapPath(path)); 
      // MultiViewIndex.ActiveViewIndex = 0; 
     //}catch(Exception ex) 
     //{ 
      //  AvatarDetails.Text = ex.Message; 
     //} 
    } 
} 

private void createPath(string path) 
{ 
    string activeDir = HostingEnvironment.MapPath("~/Images/avatar/userAvatars"); 
    if(!Directory.Exists(Server.MapPath(path))) 
    { 
     string newPath = Path.Combine(activeDir, User.Identity.Name); 
     Directory.CreateDirectory(newPath); 
    } 
} 

Que puis-je faire pour résoudre ce problème?

EDIT

Salut à ce point, j'ai plein contrôle permision aux utilisateurs suivants:

  • Authetificated utilisateurs
  • IUSR
  • SYSTÈME
  • SERVICE DE RÉSEAU
  • IIS_WPG
  • Administrateur
  • uTIlIsaTeurs

Est-ce que je dois posible de définir une configuration IIS pour que cela fonctionne?

EDIT

J'ai foiré autour avec SQL-SERVER pour les deux derniers jours pour faire ce travail si je pourrais avoir missconfigured forme quelque chose que je comprends NETWORK SERVICE est stocké dans le maître SQL-SERVER ? .db database.I semblent avoir deux connexions de service réseau peut-il être le problème que je me souviens quand je suis arrivé, j'avais pas maintenant j'ai deux:

enter image description here

EDIT

C'est l'impression avec les permisions I ajouté au dossier:

enter image description here

EDIT: erreur complète

enter image description here

StackTrace:

enter image description here

+0

Pouvez-vous donner plus de détails: Exécutez-vous cela sur le serveur web de développement ou IIS. Et quelle version de .net/IIS utilisez-vous? Le chemin est-il créé et aucun fichier n'est téléchargé ou est-ce que le chemin n'est pas créé? – Pleun

+0

J'utilise .NET 4 et IIS 6.1.Le chemin est créé en utilisant le nom d'utilisateur de l'utilisateur.Cette partie fonctionne.La partie qui ne fonctionne pas est quand j'essaie de sauvegarder le fichier, je reçois l'erreur d'accès je vais ost le erreur complète et la trace de la pile.L'erreur apparaît également si je l'ai exécuté de Visual Studio non seulement de IIS –

Répondre

4

Dans la méthode CreatePath, vous créez le dossier 'D: \ Projets IDE \ Visual Studio \ MyWork \ Sites Web \ Forum \ Images \ avatar \ userAvatars \ aleczandru'.

Ensuite, vous essayez de sauvegarder l'image téléchargée avec le nom de fichier 'D: \ Projets IDE \ Visual Studio \ MyWork \ Sites Web \ Forum \ Images \ avatar \ userAvatars \ aleczandru'.

Vous ne pouvez pas avoir un dossier et un fichier portant le même nom. Si vous essayez de le faire, le système d'exploitation vous dira que l'accès est refusé.

What happens if you try this in a command prompt

Je suppose que vous voulez soit créer un nom de fichier dans le dossier aleczandru, ou que vous vouliez dire enregistrer le fichier comme aleczandru.png ou quelque chose dans le dossier userAvatars.

En supposant que votre UploadImage est un contrôle FileUpload, vous pouvez enregistrer le fichier dans le dossier de l'utilisateur en utilisant le nom de fichier d'origine du fichier téléchargé.

UploadImage.SaveAs(HostingEnvironment.MapPath(
    Path.Combine(path, UploadImage.FileName))); 
+0

pourriez-vous s'il vous plaît me montrer un exemple sur la façon dont je devrais faire cela, je suis confus? –

+0

Voir la mise à jour. Si ce n'est toujours pas clair, quel est le chemin complet et le nom de fichier que vous attendez? – comecme

+0

omg J'ai donné la même solution 3 heures avant:/ – Mert

0

Essayez de donner le groupe appelé aux utilisateurs la permission de modifier ce répertoire (sous sécurité)

+0

Je l'ai déjà fait que ne fonctionne toujours pas –

+0

assurez-vous que ce dossier n'est pas en lecture seule ou sous le contrôle de la source – kleinohad

+0

Essayez de changer la permission pour construit dans les utilisateurs – kleinohad

0

Vous devez savoir ce que l'utilisateur la page de téléchargement de asp.net fonctionne sous. Si vous ne l'avez pas modifié et que vous n'exécutez pas d'emprunt d'identité, il doit être défini par défaut sur l'utilisateur ASPNET sur la machine locale.Quoi qu'il en soit, donnez à cet utilisateur des autorisations de lecture/écriture sur le dossier.

+0

où puis-je vérifier cela? –

+0

J'ai trouvé que je dois activer l'accès pour IUSR (en supposant que IIS) –

4

Veuillez vous assurer que vous avez le nom de fichier complet avec l'extension de fichier dans votre chemin.

+0

Il n'y aurait pas de nom de fichier lors de la création d'un répertoire? – bgs264

+1

il n'a pas d'erreur pendant qu'il crée le répertoire. comme vous voyez l'écran jaune, il obtient une erreur sur enregistrer comme méthode.et le chemin n'a pas de nom de fichier. – Mert

+0

Désolé, mon erreur, je pensais que l'erreur était lors de la création du répertoire, ne pas télécharger le fichier. – bgs264

1

Ok ... Je l'ai déjà fait pour un projet d'implémentation d'une méthode PUT pour http. Je ne m'en souviens pas clairement ... mais quelques allusions ... si j'étais dans mon bureau, je pourrais vous le dire correctement. Voici les astuces

  1. Vous devez ajouter IIS_IUSRS pour avoir accès au dossier dans Windows. Aller à la console d'administration IIS cliquez sur le nœud du site déployé, et définissez l'autorisation pour le même dossier/demandes de site Web entrant ... Je ne me souviens pas de la catégorie qui était ce .. ce volet des paramètres vous permettra d'ajouter/modifier autorisations pour POST, GET et d'autres verbes d'ailleurs ... lorsque vous modifiez cela, vous devriez voir les options pour l'administrateur, un compte d'utilisateur particulier, anonyme, etc.

peut-être que je vous répondrai demain ... comment exactement le faire :-)