Le chemin d'accès xxx est refusé
Après avoir lu des tonnes de des postes similaires, j'ai décidé de est venu avec celui-ci. Eh bien, fondamentalement, ce problème est similaire à beaucoup d'autres, mais de toute façon je ne peux pas le faire fonctionner.
Voici le scénario, j'ai l'équilibrage de la charge sur 2 serveurs (servA et servB) et j'ai besoin de forcer l'application à créer juste sur 1 d'entre eux. Si je veux mettre le chemin d'accès UNC lorsque je enregistrer des fichiers. J'ai, évidemment, ont un problème de création des fichiers sur le répertoire sur le net.
Si je le lance avec Cassini c'est du tout bon, je peux le chemin d'accès car il est connecté avec mon compte. Dès que j'ai migrer l'application sur le serveur de développement, il ne fonctionne plus.
Je sais IIS utilise l'utilisateur associé à l'application de la piscine, donc j'ai vérifié que le compte (ce qui est network_service) et ajout de privilèges d'écriture en écriture sur ce dossier.
Pas encore assez. Ce que vous pensez sur "tout le monde"?! Il doit travailler!
Oh, eh bien, il ne l'est pas.
Nous allons voir un peu de code:
Directory.CreateDirectory("\\\\my.ip.over.da.net\\c$\\inetpub\\wwwroot\\projfolder\\otherprojfolder\\test");
Et c'est le message que j'ai reçu lorsque j'essaie de créer ce dossier.
{"Message":"Access to the path \u0027\\\\\\\\my.ip.over.da.net\\\\c$\\\\inetpub
\\\\wwwroot\\\\projfolder\\\\otherprojfolder\\\\test\u0027 is denied.","StackTrace":"
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)\r\n at
System.IO.Directory.InternalCreateDirectory(String fullPath, String path,
DirectorySecurity dirSecurity)\r\n at System.IO.Directory.CreateDirectory(String path,
DirectorySecurity directorySecurity)\r\n at
NSC.Ajax.GetData.testgrid()","ExceptionType":"System.UnauthorizedAccessException"}
Il est appelé par AJAX pour tester plus facilement, c'est pourquoi la réponse est formaté de cette manière.
Vous devez vous connecter pour publier un commentaire.
Le problème est que vous n'allez pas avoir accès à cet emplacement à l'aide de l'IIS informations d'identification, le serveur de dev va être sur un domaine distinct quelque part d'autre et d'accéder à l'arrière de votre machine pour le partage admin c$ n'est pas aller au travail, la modification des autorisations à ce niveau, c'est.. un peu risqué...
Si vous avez vraiment pour accéder à des fichiers sur votre ordinateur local à partir de votre serveur de dev, vous seriez probablement mieux de créer un partage nommé
test
(C:\inetpub\wwwroot\projfolder\otherprojfolder\test
) sur votre machine et de définir les autorisations sur ce pourEveryone
à lire (si vous avez besoin de créer des fichiers et des dossiers que vous aurez besoin de plus, mais je suggère seulement de donner le minimum d'accès vous pouvez vous en sortir avec), assez précaire bien que, mais depuis votre dev machine ne dispose d'aucun moyen d'authentification d'un compte sur un réseau différent (de votre machine, vous êtes de partage des fichiers à partir de), vous n'avez pas beaucoup à jouer avec les!Afin de créer un dossier partagé local, puis il suffit de pointer votre code de
\\\\my.ip.over.da.net\\test
.Note, vous devez définir les autorisations sur le partage et sur le dossier lui-même, si la part a assez d'autorisations, mais l'ACL sur le dossier n'est pas d'accord, vous aurez toujours obtenir les autorisations refusées.
Vous pouvez emprunter l'identité d'un autre utilisateur lors de la création du répertoire
Plus de détails ici :
http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.aspx