Est une application ASP.NET 32 bits en cours d'exécution sur Windows 64 bits LARGEADDRESSAWARE

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

  •  12-09-2019
  •  | 
  •  

Question

J'ai une application ASP.NET 32 bits existant utilisé DLL 32 bits non gérés.

Si j'exécuter sur un système d'exploitation 64 bits, il sera automatiquement LARGEADDRESSAWARE (à savoir avoir accès au maximum de 4 Go de mémoire virtuelle)?

Sinon, qu'est-ce que je peux faire pour le rendre LARGEADDRESSAWARE?

recherche sur Google relevai cette question , mais il n'a pas la réponse à la question ci-dessus.

EDIT

Ce blog suggère que l'ASP. NET processus de travail 1.1 est LARGEADDRESSAWARE, mais ne dit rien sur ASP.NET 2.0:

  

Si un système est démarré avec le / 3GB   commutateur dans boot.ini (uniquement pris en charge   Enterprise et Data Center éditions   Windows 2000, et toutes les versions de   Windows XP et Windows Server 2003) un   procédé qui est lié à la   / LARGEADDRESSAWARE commutateur peut « voir »   3Go. Aspnet_wp.exe est lié dans ce   chemin dans la version 1.1 et peut prendre   profiter.

EDIT 2

C'est un autre blog qui suggère que sont LARGEADDRESSAWARE, mais ne mentionne pas la version ASP.NET applications ASP.NET 32 bits:

  

Nous avons trouvé les composants qui étaient   organisée par le framework ASP.NET ont été   en profitant de la> 2 La mémoire de concert   espace

Je dois dire que je suis étonné par le manque d'informations publiées faisant autorité sur ce sujet.

Était-ce utile?

La solution

J'ai réussi à obtenir l'accès à un serveur exécutant Windows 2003 SP2, et la réponse semble être oui, les applications ASP.NET 32 bits sont LARGEADDRESSAWARE, et avoir accès au maximum de 4 Go de mémoire virtuelle.

J'établi en:

  • examen w3wp.exe (le processus de travail IIS 32 bits) en utilisant "dumpbin / en-têtes". Cela montre que le bit LARGEADDRESSAWARE est réglé.

  • exécution d'une application ASP.NET 32 bits qui tente d'allouer plus de 2 Go de mémoire virtuelle. Ce succès a été

Je suppose que le résultat serait le même pour Windows 2008 / IIS7, mais ne l'ai pas testé.

Autres conseils

Non, ce ne sera pas. Pour ce faire les longues adresses, vous devez exécuter IIS comme une application 64 bits (pas en cours d'exécution en utilisant WOW). Cela signifie que votre 32 bits non gérés dll devront être remplacées par les versions 64 bits d'entre eux.

Normalement, asp.net sera converti en une application 64 bits lors de la sélection de l'option de compilateur pour cibler toute plate-forme (qui est la valeur par défaut). Le problème avec l'application 32 bits vous est qu'il ya non gérés dll 32 bits. Ceux-ci peuvent ne pas fonctionner dans une application 64 bits. Cela signifie que vous devez exécuter votre application ASP.NET comme une application 32 bits qui signifie que vous devez installer la version 32 bits d'IIS sur votre serveur 64 bits. La seule façon d'éviter cela est de remplacer les dll non gérés 32 bits avec ceux qui sont conçus pour fonctionner dans un environnement 64 bits. Une application 32 bits ne peut pas utiliser toute la mémoire sur le serveur 64 bits, de sorte que votre demande ne sera pas en mesure de « voir » la mémoire supplémentaire.

applications ASP.NET vont se recompiler (fournissant la cible toute option d'environnement est définie au moment de la compilation) dans un environnement 64 bits, donc ils ne sont pas des applications 32 bits plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top