Foros del Web » Programación para mayores de 30 ;) » .NET »

Incompatibilidad de dos web.config

Estas en el tema de Incompatibilidad de dos web.config en el foro de .NET en Foros del Web. Muy buenas. Estoy intentando trabajar con los dichosos archivos de configuración para ASP.NET, los web.config. Tengo uno en el directorio principal dondes se definen algunas ...
  #1 (permalink)  
Antiguo 01/12/2004, 03:40
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Incompatibilidad de dos web.config

Muy buenas. Estoy intentando trabajar con los dichosos archivos de configuración para ASP.NET, los web.config.

Tengo uno en el directorio principal dondes se definen algunas configuraciones como la conexión a la base de datos, y el modo de autenticación que uso para proteger algunos directorios.

Esto último se hace por autenticación por formularios redireccionando a una página para que el usuario se registre:

Código:
<authentication mode="Forms">
 <forms name="visado_vs_2003" loginUrl="Login.aspx" path="/">    
 </forms>
</authentication>
Ahora bien, desarrollé otra sección en un subdirectorio que contiene su propio archivo de configuración, en el que además de redirigir a otra página distinta para registrarse se definen los usuarios y sus respectivas contraseñas:

Código:
<authentication>
 <forms name="ccaa_authorization" loginUrl="ccaa_login.aspx" path="/">
  <credentials passwordFormat="Clear">
   <user name="usuario1" password="contra1"/>
   <user name="usuario2" password="contra2"/>
   <user name="usuario3" password="contra3"/>
   <user name="usuario4" password="contra4"/>
  </credentials>
 </forms>
</authentication>
Pues bien, me da error al intentar acceder a cualquier página de ese subdirectorio. El error es:

Cita:
Mensaje de error del analizador: Es incorrecto utilizar una sección registrada como allowDefinition='MachineToApplication' mas allá del nivel de aplicación. Este error puede producirse por un directorio virtual que no está configurado como aplicación en IIS.
Yo pensaba con un archivo de configuración era propio de cada directorio y, que en caso de no existir se heredaba el del directorio superior.

¿Cómo puedo solucionar esto?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 01/12/2004, 07:41
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
He recibido en mi correo un aviso de respuesta pero me encuentro con que la supuesta respuesta ha desaparecido.

¿Dónde estará?.....
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #3 (permalink)  
Antiguo 01/12/2004, 08:40
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Bueno, ya encontré una solución. En el web.config del directorio principal he unido los dos tipos de formularios en los que hay que autenticarse:

Código:
<authentication mode="Forms">
 <forms name="visado_vs_2003" loginUrl="Login.aspx" path="/">    
 </forms>
 <forms name="ccaa_authorization" loginUrl="ccaa/ccaa_login.aspx" path="/">
  <credentials passwordFormat="Clear">
   <user name="usuario1" password="contra1"/>
   <user name="usuario2" password="contra2"/>
   <user name="usuario3" password="contra3"/>
   <user name="usuario4" password="contra4"/>
  </credentials>
 </forms>
</authentication>
Así, para cada aplicación, esté donde esté, se tienen unos credenciales y una página de registro distinta.

No sé si es la mejor solución, pero al menos está funcionando.

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 20/01/2005, 09:08
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Retomo el tema de nuevo (sólo hablo yo, je je) porque he tenido algunos fallitos. La cuestión es que al tener dos aplicaciones distintas corriendo en el mismo servidor hay problemas con las cookies que se utilizan en la autenticación. En concreto, esto es lo que pone en MSDN:

Atributos de la etiqueta <forms>:

Código:
name: Specifies the HTTP cookie to use for authentication. By default, the value of name is .ASPXAUTH. If multiple applications are running on a single server and each application requires a unique cookie, you must configure the cookie name in each application's Web.config file.
Pues bien, cómo configuro el nombre de la cookie para cada aplicación.

El web.config principal estaría así:

Código:
 <forms name="NombreSolucion1" loginUrl="carpeta1/Login.aspx" path="/">    
 </forms>
 <forms name="NombreSolucion2" loginUrl="carpeta2/Login.aspx" path="/">
 </forms>
Gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 21/01/2005, 02:49
 
Fecha de Ingreso: enero-2005
Mensajes: 2
Antigüedad: 19 años, 3 meses
Puntos: 0
Sonrisa

Hola!

a mi me esta pasando lo mismo. Yo lo he solucionado poniendo el subdirectorio como una carpeta de aplicacion distinta, así no me entraban en cinflicto los web.config

Tambien me di cuenta de una cosa que este problema me aparecia cuando utilizaba Web Matrix, con Visual Studio nop

Voy a probar ahora como dices tu a ver si me funciona.

byes!!
  #6 (permalink)  
Antiguo 21/01/2005, 03:01
 
Fecha de Ingreso: enero-2005
Mensajes: 2
Antigüedad: 19 años, 3 meses
Puntos: 0
me se me olvidaba

Holas de nuevo!

Si estas trabajando con Visual Studio para que funcionen correctamente los subdirectorios tienes que copiar la carpeta bin del principal en el subdirectorio. Sino va a darte problemas.

Ta lueguin!!!
  #7 (permalink)  
Antiguo 25/01/2005, 07:00
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Pues no me funciona. He creado un web.config con todos los datos correspondientes para cada subdirectorio. He puesto una carpeta bin en cada subdirectorio con sus dll correspondientes. Y luego en un subdirectorio de cada subdirectorio un archivo web.config para protegerlo.

Pero siguen dando un error en el web.config.

¿Qué se puede hacer?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #8 (permalink)  
Antiguo 25/01/2005, 08:46
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Alguna idea, por favor, es un poquito urgente.

Gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #9 (permalink)  
Antiguo 02/02/2005, 10:05
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Parece que no hay solución a este problema ¿no? Es como si la etiqueta <authentication> no se pudiera redefinir en sistintos subdirectorios. He probado otra opción con la etiqueta <location>:

Código:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <location path="admin">
      <system.web>
         <authorization>
            <allow roles="Administradores"/>
            <deny users="*"/>
         </authorization>
      </system.web>
   </location>
   <location path="socios">
      <system.web>
         <authentication mode="Forms">
            <forms name="socios_authorization" loginUrl="logSocios.aspx" path="/">
         </forms>
     </authentication> 
         <authorization>
            <allow roles="socios"/>
            <deny users="*"/>
         </authorization>
      </system.web>
   </location>
   <system.web>
      <authentication mode="Forms">
         <forms name="admin_authorization" loginUrl="logAdmin.aspx" path="/">
            <credentials passwordFormat="Clear">
               <user name="admin1" password="pass1"/>
	  <user name="admin2" password="pass2"/>
            </credentials>
         </forms>
     </authentication> 
  </system.web>
</configuration>
Y lo de siempre:
Cita:
Mensaje de error del analizador: Es incorrecto utilizar una sección
registrada como allowDefinition='MachineToApplication' mas allá del nivel de
aplicación. Este error puede producirse por un directorio virtual que no está
configurado como aplicación en IIS.
¿?
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #10 (permalink)  
Antiguo 20/01/2009, 07:19
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Incompatibilidad de dos web.config

yo tengo el mismo problema y estoy parao igual! si a alguien se le ocurre alguna idea se agradeceran por lo pronto dejo aqui algo que encontre en la red que explica como resolver nuestro problema desde el web.config principal con un <location path> o en el subdirectorio.A ver si es que quiza yo no estoy interpretando bien la explicación aunque parece muy obvia.
Suerte a todos seguiré intentandolo.

Aqui les dejo la explicación:

Es incorrecto utilizar una sección registrada como allowDefinition='MachineToApplication' mas allá del nivel de aplicación

En Plain Concepts estamos colaborando con Microsoft en el programa Emprendia.

¿Que qué es Emprendia?

Pues Emprendia nace como una iniciativa de ayuda dirigida a emprendedores que quieren hacer realidad una idea y desarrollar un proyecto empresarial.

Tenéis más información aquí: http://www.microsoft.com/spanish/msdn/enterprising/default.mspx

Recientemente nos llegó una pregunta de unos de los participantes en el programa que se estaban encontrando con el problema que pongo en el título del Post.

Este problema es un viejo conocido. Quede aquí para personas que se encuentre con este problema en el futuro.

Este error ocurre principalmente en 2 escenarios.

1.- Si creamos una nueva aplicación usando Visual Studio .NET 2002 o 2003, automáticamente crea un directorio virtual y lo configura como una aplicación. Sin embargo, si creamos el directorio virtual de forma manual y no está configurado como una aplicación, no seremos capaces de ejecutar la aplicación y obtendremos el error del título.

Para resolverlo, simplemente tenemos que hacer click con el botón derecho en el directorio virtual para ver sus propiedades, y hacer click en "Crear" para crear una nueva aplicación. Automáticamente creará una aplicación usando el nombre del directorio virtual y ya podremos acceder sin problemas.

2.- Cuando tenemos subdirectorio en la aplicación, podemos tener ficheros web.config para cada subdirectorio. Pero..., hay ciertas propiedades que no se pueden establecer en el fichero de configuración de un subdirectorio como por ejemplo la autenticación, la gestión del estado de la sesión (podremos ver que el mensaje de error muestra el número de línea donde declaramos la autenticación o el estado de la sesión en el web.config del subdirectorio). La razón es que estos parámetros de configuración no se pueden sobreescribir a nivel de subdirectorio a menos que el subdirectorio esté configurado también como una aplicación (como comentaba en el punto anterior).

A veces tenemos la tendencia de añadir ficheros web.config en los subdirectorio si queremos proteger el acceso a los ficheros de ese subdirectorio (un caso muy típico, el directorio es "admin" y queremos denegar el acceso a las páginas de administración a usuarios no autorizados).

Esto mismo se puede hacer usando el web.config a nivel de raíz de la aplicación, indicando la localización de aquello que queremos configurar:
<location path="Admin">
<system.web>
<authorization>
<allow roles="administradores" />
<deny users="*" />
</authorization>
</system.web>
</location>

Si esto mismo lo quisiesemos hacer en el subdirectorio, lo haríamos así:
<configuration>
<system.web>
<authorization>
<allow roles="administradores" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
  #11 (permalink)  
Antiguo 21/01/2009, 02:56
 
Fecha de Ingreso: enero-2008
Mensajes: 13
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Incompatibilidad de dos web.config

ya encontré la solucion aqui les dejo un ejemplo! espero que les sea de ayuda!

Esto lo ponemos en el web.config principal

<authentication mode="Forms">
<forms name="cookie generada" path="nombre path" loginUrl="Login/Login.aspx" protection="All" timeout="30">
</forms>
</authentication>
<authorization>
<allow users="*"/> // y le damos permiso a todo el mundo que entre pq la principal no nos interesa ,en este ejemplo, asegurarla.
</authorization>

Esto iria en el web.config del subdirectorio que queremos asegurar.

<authorization>
<deny users="?"/>
</authorization>

Espero que les sirva! (A mi me sirvió)


Un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:05.