Es una aplicación de ASP.NET de 32 bits ejecutando en Windows de 64 bits LARGEADDRESSAWARE

StackOverflow https://stackoverflow.com/questions/1661765

  •  12-09-2019
  •  | 
  •  

Pregunta

Tengo una aplicación ASP.NET de 32 bits existente que utiliza DLL no administrados de 32 bits.

Si me quedo esto en un sistema operativo de 64 bits, será automáticamente LARGEADDRESSAWARE (es decir, tener acceso a la plena 4 GB de memoria virtual)?

Si no es así, ¿qué puedo hacer para que sea LARGEADDRESSAWARE?

esta pregunta , pero carece de la respuesta a la pregunta anterior.

Editar

Este blog sugiere que la AEP. NET proceso 1.1 trabajador es LARGEADDRESSAWARE, pero no dice nada acerca de ASP.NET 2.0:

  

Si se inicia un sistema con el modificador / 3GB   Interruptor de boot.ini (sólo está soportado en   ediciones centros de datos empresariales y de   Windows 2000 y todas las versiones de   Windows XP y 2003) de un servidor de Windows   proceso que se vincula con el   interruptor de encendido / LARGEADDRESSAWARE puede "ver"   3 Gb. Aspnet_wp.exe está vinculado en ese   forma en la versión 1.1 y puede tomar   ventaja de eso.

EDIT 2

Este es otro blog que sugiere que las aplicaciones ASP.NET de 32 bits son LARGEADDRESSAWARE, pero no menciona la versión de ASP.NET:

  

Nos encontramos los componentes que eran   organizado por el marco ASP.NET eran   aprovechando la memoria de actuación> 2   espacio

Debo decir que estoy sorprendido por la falta de información publicada autorizada sobre este tema.

¿Fue útil?

Solución

Me las arreglé para conseguir el acceso a un servidor que ejecuta Windows 2003 SP2, y la respuesta parece ser afirmativa, las aplicaciones ASP.NET de 32 bits son LARGEADDRESSAWARE, y tener acceso a la plena 4 GB de memoria virtual.

establecí esto:

  • examinar w3wp.exe (el proceso de trabajo de IIS de 32 bits), utilizando "dumpbin / encabezados". Esto demuestra que el bit LARGEADDRESSAWARE está establecido.

  • ejecutar una aplicación ASP.NET de 32 bits que intenta asignar más de 2 GB de memoria virtual:. Este fue un éxito

Asumo el resultado sería el mismo para Windows 2008 / IIS 7, pero no lo he probado.

Otros consejos

No, no lo hará. Para que sea más grande dirección consciente, tiene que ejecutar las IIS como una aplicación de 64 bits (no se ejecuta utilizando WOW). Esto significa que sus archivos DLL de 32 bits no administrados tendrán que ser reemplazados con las versiones de 64 bits de ellos.

Normalmente, asp.net se convertirá en una aplicación de 64 bits al seleccionar la opción de compilador para apuntar cualquier plataforma (que es el valor por defecto). El problema con la aplicación de 32 bits que se tiene es que hay no administrados DLL de 32 bits. Estos no se pueden ejecutar en una aplicación de 64 bits. Esto significa que usted tiene que ejecutar la aplicación ASP.NET como una aplicación de 32 bits que significa que usted tiene que instalar la versión de 32 bits de IIS en el servidor de 64 bits. La única manera de evitar esto es reemplazar los archivos DLL no administrados de 32 bits con los que están diseñados para funcionar en un entorno de 64 bits. Una aplicación de 32 bits no puede utilizar toda la memoria en el servidor de 64 bits, por lo que su aplicación no será capaz de "ver" la memoria adicional.

aplicaciones ASP.NET se recompilar sí mismos (siempre que el objetivo de cualquier opción de entorno se establece en tiempo de compilación) en un entorno de 64 bits, por lo que no son aplicaciones de 32 bits más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top