Création d’application virtuelle / répertoire dans un dossier physique sur IIS / ASP.NET

Ce que je veux réaliser est simple:

  • J’ai un site Web, dites “mon site” – http: // localhost
  • Sur ce site, j’ai un dossier (physique) “foo” – http: // localhost / foo
  • Dans le dossier “foo”, je souhaite créer un répertoire virtuel (application?) Appelé “upload”. L’URL devient donc http: // localhost / foo / upload.

Notez que “mon-site” est un site Web vide contenant de nombreux dossiers, “foo”, “bar”, “baz”, etc.

Ainsi, lorsque je clique avec le bouton droit de la souris sur “foo” et que je choisis “Nouveau> répertoire virtuel”, que j’ajoute mon application que j’ai écrite dans VS.NET, puis que j’essaie de naviguer jusqu’à http: // localhost / foo / upload, l’ erreur suivante apparaît:

Parser Error Message: An error occurred loading a configuration file: Failed to start monitoring changes to 'C:\InetPub\my-site\foo\web.config' because access is denied. 

Le problème, c’est qu’il n’ya pas de configuration Web. dans le dossier “foo”, ce qui ne devrait pas être le cas, car ce n’est qu’un dossier normal du site. Si j’ajoute le répertoire virtuel au niveau supérieur, à l’ adresse http: // localhost / foo_upload , tout fonctionne comme il se doit … alors, qu’est-ce que je fais mal ici?

Cela ressemble à un problème d’permissions avec votre système: pour un compte .NET, le contexte utilisateur dans lequel ASP.NET s’exécute nécessite un access à votre site.

Sur les systèmes jusqu’à Windows Server 2000, cet utilisateur était un compte local simplement appelé ASPNET, qui est ensuite devenu l’un des comptes NT_AUTHORITY. La méthode la plus simple consiste à fournir au groupe IIS WPG (un groupe local) un access au Compte.

MS fournit des instructions à l’ adresse http://support.microsoft.com/kb/316721/ . Utilisez ce qui précède pour déterminer le compte d’utilisateur pour lequel vous devez vérifier l’access.

Je réponds juste pour quelqu’un qui a le même problème et a trouvé ce sujet.

J’ai ajouté une permission à Tout le monde (dans ce cas, ce serait dans le dossier C:\InetPub\my-site\foo\ ). Ensuite, j’ai imprimé sur la page quel utilisateur exécute l’application dans ce dossier …

Quelque chose comme:

 labelCurrentUser.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 

Ensuite, j’ai retiré l’autorisation à tout le monde et ajouté l’utilisateur que j’ai obtenu.