Frage

Ich habe eine vorhandene 32-Bit ASP.NET-Anwendung, die 32-Bit nicht verwalteten DLLs verwendet.

Wenn ich das auf einem 64-Bit-Betriebssystem ausführen, wird es automatisch LARGEADDRESSAWARE (d haben Zugriff auf die volle 4 GB virtuellen Speicher)?

Wenn nicht, was kann ich tun es LARGEADDRESSAWARE zu machen?

Googeln aufgedreht diese Frage , aber es fehlt die Antwort auf die obige Frage.

Bearbeiten

Dieser Blog dass der ASP vermuten lässt. NET 1.1-Arbeitsprozess ist LARGEADDRESSAWARE, aber schweigt über ASP.NET 2.0:

  

Wenn ein System mit dem / 3Gb gebootet   Schalter in boot.ini (nur unterstützt, auf   Enterprise und Datacenter-Editionen von   Windows 2000 und alle Versionen von   Windows XP und Windows Server 2003) ein   Prozess, der mit dem verbunden ist   / LARGEADDRESSAWARE Schalter „sehen“   3Gb. Aspnet_wp.exe ist dadurch verbunden   Art und Weise in der Version 1.1 und kann nehmen   nutzt.

EDIT 2

Dies ist ein weiterer Blog das deutet darauf hin, dass 32-Bit-ASP.NET-Anwendungen LARGEADDRESSAWARE sind, aber nicht die ASP.NET-Version erwähnen:

  

Wir fanden die Komponenten, die waren   durch die ASP.NET-Framework gehostet waren   Vorteil der> 2 Gig Speicher unter   Raum

Ich muß sagen, dass ich über den Mangel an autoritative veröffentlichten Informationen zu diesem Thema erstaunt bin.

War es hilfreich?

Lösung

ich es geschafft, Zugriff auf einen Server zu bekommen unter Windows 2003 SP2, und die Antwort erscheint ja zu sein, 32-Bit-ASP.NET-Anwendungen sind LARGEADDRESSAWARE, und haben Zugriff auf die volle 4 GB virtuellen Speicher.

ich festgestellt dies durch:

  • Prüfung w3wp.exe (der 32-Bit-IIS-Arbeitsprozess) unter Verwendung von "dumpbin / headers". Dies zeigt, dass die LARGEADDRESSAWARE Bit gesetzt.

  • eine 32-Bit ASP.NET-Anwendung, die 2 GB virtuellen Speicher zuzuweisen versucht über. Das war erfolgreich

Ich gehe davon aus das Ergebnis das gleiche für Windows 2008 / IIS7 sein würde, aber habe es nicht getestet.

Andere Tipps

Nein wird es nicht. Um es große Adresse bewusst zu machen, müssen Sie die IIS als 64-Bit-Anwendung ausgeführt wird (nicht mit laufender WOW). Dies bedeutet, dass 32-Bit nicht verwalteten DLLs mit den 64-Bit-Versionen von ihnen ersetzt werden muß.

Normalerweise asp.net konvertiert in eine 64-Bit-Anwendung, wenn der Compiler Option auswählen jeder Plattform Ziel (dies ist die Standardeinstellung). Das Problem mit der 32-Bit-Anwendung, die Sie haben, ist, dass es nicht verwaltete 32-Bit-DLLs. Diese können nicht in einer 64-Bit-Anwendung ausgeführt. Dies bedeutet, dass Sie zu Ihrer ASP.NET-Anwendung als 32-Bit-Anwendung ausgeführt werden, was bedeutet, dass Sie die 32-Bit-Version von IIS installieren auf Ihren 64-Bit-Server. Der einzige Weg, dies zu vermeiden, ist der 32-Bit nicht verwalteten DLLs mit ersetzen, die ausgelegt sind, in einer 64-Bit-Umgebung ausgeführt werden. Eine 32-Bit-Anwendung kann nicht die gesamten Speicher auf 64-Bit-Server verwenden, so dass Ihre Anwendung wird der zusätzlichen Speicher nicht in der Lage sein, zu „sehen“.

ASP.NET-Anwendungen werden sich neu kompilieren (vorausgesetzt, das Ziel jeder Umgebung Option bei der Kompilierung festgelegt ist) in einer 64-Bit-Umgebung, so dass sie nicht 32-Bit-Anwendungen mehr.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top