2010-08-12 15 views
7

No hemos tenido problemas para ejecutar directorios virtuales .NET 4.0 en sitios web 2.0, pero al revés nos están dando algunos problemas. Esto es comprensible, pero ¿hay alguna manera de evitar este problema? Se están ejecutando con diferentes grupos de aplicaciones ... ¿podemos hacer que el directorio virtual se salte el web.config del sitio web y vaya directamente al machine.config?¿Puedo alojar un directorio virtual .net 2.0 en el sitio asp.net 4.0?

Estamos recibiendo el siguiente error:

Parser Error Message: Unrecognized attribute 'targetFramework'. Note that attribute names are case-sensitive. 

Source Error: 

Line 22: </appSettings> 
Line 23: <system.web> 
Line 24:  <compilation debug="true" targetFramework="4.0" /> 
Line 25:  <customErrors defaultRedirect="url" mode="RemoteOnly"> 
Line 26:  <error statusCode="404" redirect="~/404.aspx"/> 
+0

posible duplicado de [¿Es posible negar por completo un web.config "superior" en una subcarpeta?] (http: //stackoverflow.com/questions/783732/is-it-possible-to-completely-negate-a-higher-web-config-in-a-subfolder) – Merritt

Respuesta

10

Añadir lo siguiente en su raíz web.config

<location path="." inheritInChildApplications="false"> 
+0

Como señalé en mi respuesta, el ' 'directive no se puede usar para anular' '. Traducción: desafortunadamente, esto no funcionará en todos los escenarios. – Josh

5

Is it possible to completely negate a "higher" web.config in a subfolder?

En su raíz web.config:

<location path="." inheritInChildApplications="false"> 
    <system.web>  
     <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    </location> 

(Ben llegó a esto primero, pero dejaré esta respuesta ya que apunta a algunas alternativas)

+0

Gracias por la respuesta y la notificación de duplicación. – Merritt

+0

Oh, le daré crédito entonces. – Merritt

1

Este es un problema de herencia web.config, y no puede superar todos los problemas con la directiva <location>.

Estábamos obteniendo errores similares sobre las directivas de configuración duplicadas en una de nuestras aplicaciones. Después de la investigación, parece que se debe a this issue.

En resumen, nuestro sitio web raíz es ASP.NET 3.5 (que es 2.0 con bibliotecas específicas agregadas), y tenemos una subaplicación que es ASP.NET 4.0.

La herencia web.config hace que la sub-aplicación ASP.NET 4.0 herede el archivo web.config de la aplicación principal ASP.NET 3.5.

Sin embargo, la aplicación ASP.NET 4.0 es global (o "raíz") web.config, que reside en C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ web.config y C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ web.config (dependiendo de su bitness), ya contiene secciones de configuración que están presentes en la aplicación web.config específica de una aplicación .NET 3.5.

La aplicación ASP.NET 4.0 intenta fusionar la raíz ASP.NET 4.0 web.config y la principal web.config (la de una aplicación ASP.NET 3.5) y se ejecuta en duplicados en el <configSections> nodo.

La directiva <location> no se puede utilizar para evitar la herencia de entradas <configSections>. La única solución que he podido encontrar es eliminar los configSections desde el web.config padres, y luego o bien

  1. determinar que usted no los necesita en su aplicación de la raíz, o
  2. actualizar el aplicación principal para ASP.NET 4.0 (por lo que obtiene acceso a la raíz web.config's configSections)
Cuestiones relacionadas