c# - Creación de aplicación/directorio virtual en una carpeta física en IIS/ASP.NET
web-config virtual-directory (2)
Suena como un problema de permisos en su sistema: para una cuenta .NET, el contexto de usuario en el que se ejecuta ASP.NET requiere acceso a su sitio.
En los sistemas hasta Windows Server 2000, este usuario era una cuenta local llamada simplemente ASPNET, luego se cambia a una de las cuentas NT_AUTHORITY. La forma más fácil de encontrar esto es proporcionarle al grupo IIS WPG (un grupo local) acceso a la cuenta.
MS proporciona instrucciones en http://support.microsoft.com/kb/316721/ , use lo anterior para determinar para qué cuenta de usuario debe verificar el acceso.
Lo que quiero lograr es simple:
- Tengo un sitio web, diga "my-site" - http: // localhost
- En este sitio web tengo una carpeta (física) "foo" - http: // localhost / foo
- Dentro de la carpeta "foo" quiero tener un directorio virtual (¿una aplicación?) Llamado "cargar", por lo que la URL se convierte en http: // localhost / foo / upload
Tenga en cuenta que "my-site" es un sitio web vacío con varias carpetas, "foo", "bar", "baz", etc.
Así que cuando hago clic derecho en "foo" y elijo "Nuevo> directorio virtual" y agrego mi aplicación que he escrito en VS.NET y luego trato de navegar a http: // localhost / foo / upload obtengo este error:
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.
El caso es que no hay configuración web. en la carpeta "foo", y no debería ser así ya que es solo una carpeta normal en el sitio. Si agrego el directorio virtual en el nivel superior, en decir http: // localhost / foo_upload , todo funciona como debería ... entonces, ¿qué estoy haciendo mal aquí?
Solo estoy respondiendo por alguien que tiene el mismo problema y encontré este tema.
Agregué un permiso a Todos (en este caso, estaría en la carpeta C:/InetPub/my-site/foo/
). Luego imprimí en la página qué usuario está ejecutando la aplicación en esta carpeta ...
Algo como:
labelCurrentUser.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
Luego quité el permiso a todos y agregué el usuario que obtuve.