2012-02-10 40 views
5

Tengo una aplicación asp.net que requiere alguna edición del archivo machine.config para funcionar correctamente. En mi máquina de desarrollo (ejecutando Windows XP), edité el archivo machine.config en la ubicación: "C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727"¿Qué archivo machine.config es el que uso mi solución en el servidor?

Esta es la línea de código que modifiqué, con modificaciones (añadir usuario/pass):

<processModel autoConfig="true" userName="SYSTEM" password="AutoGenerate"> 

en el servidor (que ejecutan windows 2003 Server) hice los mismos cambios en el mismo archivo en el mismo lugar. Sin embargo, cuando depuro la solución, no funciona correctamente (no pasa nada y se agota el tiempo, el mismo problema que tuve en mi máquina de desarrollo antes de hacer estos cambios en el archivo de configuración).

He llegado al hecho de que mi aplicación no está utilizando el archivo machine.config en la misma ubicación tanto en mi máquina como en el servidor. Para confirmar esto, agregué números aleatorios al final de nombre de usuario y contraseña en ambos archivos de configuración. En mi máquina, la aplicación ni siquiera se ejecuta después de hacer esto. En el servidor, se ejecuta y falla de la misma manera antes de que se agregaran los números aleatorios.

Mi pregunta, en resumen, es ¿cómo averiguo qué archivo machine.config está usando realmente el servidor y/o cómo puedo configurarlo para usar el que está en la ubicación mencionada?

Respuesta

12

Es posible que su servidor es un servidor de 64 bits, lo que significa que será en:

C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727

El El tiempo de ejecución de 64 bits utiliza una machine.config diferente. Las reglas básicas son esto:

  1. 1.x ASP.NET utiliza %WINDIR%\Microsoft.NET\Framework\v1.1.4322
  2. ASP.NET 2.0/3.5 x86 utiliza %WINDIR%\Microsoft.NET\Framework\v2.0.50727
  3. ASP.NET 2.0/3.5 x64 utiliza %WINDIR%\Microsoft.NET\Framework64\v2.0.50727
  4. ASP.NET x86 4.0/4.5.x utiliza %WINDIR%\Microsoft.NET\Framework\v4.0.30319
  5. ASP.NET 4.0/x64 4.5.x utiliza %WINDIR%\Microsoft.NET\Framework64\v4.0.30319
  6. Para ASP.NET 5.0 utilizando el CLR completo, este será el mismo que los lugares ASP.NET 4.0 desde t he .NET Framework 4.6 es una caída en reemplazo de 4.5. Si ASP.NET 5.0 se está ejecutando en CoreCLR, no existe el concepto de un archivo machine.config.

¿Qué versión de ASP.NET que utiliza depende de su lengüeta de ASP.NET (IIS 6) o AppPool (IIS 7 +)

x64 vs x86 depende de la configuración de W3SVC/AppPools/Enable32BitAppOnWin64 para IIS 6 metadatos, o la AppPool en IIS 7.

+0

Ambas máquinas son de 32 bits, acabo de confirmar esto. +1 por algo que no había considerado aunque – turbo

+6

@turbo Supongo que podría usar el código 'ConfigurationManager.OpenMachineConfiguration(). FilePath' para averiguar dónde está buscando machine.config. Deberá hacer referencia al ensamblado 'System.Configuration'. – vcsjones

+0

Hm, se muestra como la misma ubicación en ambas máquinas. Supongo que mi conjetura fue incorrecta. Tal vez mi proyecto de alguna manera no está haciendo referencia a la versión actualizada (sé que tiene que reiniciar IIS Admin Service, y lo he hecho). Demostraste que mi conjetura estaba equivocada, pero respondiste mi pregunta. Gracias por tu ayuda. – turbo

Cuestiones relacionadas