هو تطبيق ASP.NET 32 بت يعمل على Windows 64 بت Largeaddressaware

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

  •  12-09-2019
  •  | 
  •  

سؤال

لدي تطبيق ASP.NET الحالي 32 بت يستخدم DLL غير المدارة 32 بت.

إذا قمت بتشغيل هذا على نظام تشغيل 64 بت، فهل سيكون تلقائيا largeaddressaware (أي الوصول إلى الذاكرة الافتراضية 4 جيجابايت كاملة)؟

إذا لم يكن الأمر كذلك، ماذا يمكنني أن أفعل لجعلها largeaddressaware؟

تحولت googling هذا السؤال, ، لكن هذا يفتقر إلى الإجابة على السؤال أعلاه.

تعديل

هذه بلوق يشير إلى أن عملية عامل ASP.NET 1.1 هي Largeaddressaware، ولكن صامت حول ASP.NET 2.0:

إذا تم تمهيد نظام مع مفتاح التبديل / 3GB في Boot.ini (يدعم فقط على Enterprise Center and Data Center من نظام التشغيل Windows 2000، وجميع إصدارات Windows XP و Windows Server 2003) عملية مرتبطة بمفتاح / Largeaddressaware " انظر "3GB. يرتبط Aspnet_wp.exe بهذه الطريقة في الإصدار 1.1 ويمكن أن يستفيد من ذلك.

تحرير 2.

هذه بلوق آخر التي تشير إلى أن تطبيقات ASP.NET 32 بت هي Largeaddressaware، ولكن لا تذكر إصدار ASP.NET:

وجدنا أن المكونات التي تم استضافتها بواسطة ASP.NET Framework كانت تستفيد من مساحة ذاكرة الذاكرة

يجب أن أقول أنني مندهش من عدم وجود معلومات منشورة موثوقة حول هذا الموضوع.

هل كانت مفيدة؟

المحلول

تمكنت من الوصول إلى خادم يعمل بنظام Windows 2003 المزود بحزمة الخدمة SP2، ويبدو أن الإجابة هي نعم، وتطبيقات ASP.NET 32 بت هي Largeaddressaware، والوصول إلى الذاكرة الافتراضية الكاملة 4GB.

أنشأت هذا عن طريق:

  • فحص W3WP.EXE (عملية عامل IIS 32 بت) باستخدام "Dumpbin / رؤوس". هذا يدل على أنه تم تعيين بت largeaddressaware.

  • تشغيل تطبيق ASP.NET 32 بت يحاول تخصيص أكثر من 2 جيجابايت من الذاكرة الافتراضية: كان هذا ناجحا.

أفترض أن النتيجة ستكون هي نفسها لنظام التشغيل Windows 2008 / IIS7، لكنها لم تختبرها.

نصائح أخرى

لا، لن. لجعلها عنوانا كبيرا تدرك، يجب عليك تشغيل IIS كتطبيق 64 بت (لا يعمل باستخدام WOW). هذا يعني أن DLLs الخاص بك غير المدعوم 32 بت يجب استبداله بنسخة 64 بت منهم.

عادة، سيتم تحويل ASP.NET إلى تطبيق 64 بت عند تحديد خيار التحويل البرمجي لاستهداف أي منصة (وهو الافتراضي). المشكلة مع التطبيق 32 بت لديك هو أن هناك DLL 32 بت غير المدارة. لا يمكن تشغيل هذه في تطبيق 64 بت. هذا يعني أنه يجب عليك تشغيل تطبيق ASP.NET الخاص بك كتطبيق 32 بت يعني أنه يجب عليك تثبيت الإصدار 32 بت من IIS على خادم 64 بت. الطريقة الوحيدة لتجنب ذلك هي استبدال DLLs غير المدارة 32 بت مع تلك التي تم تصميمها لتشغيلها في بيئة 64 بت. لا يمكن تطبيق 32 بت استخدام جميع الذاكرة على خادم 64 بت، لذلك لن يتمكن طلبك من "رؤية" الذاكرة الإضافية.

ستقوم تطبيقات ASP.NET بإعادة ترجمة أنفسها (توفير الهدف الهدف أي بيئة في وقت ترجمة) في بيئة 64 بت، لذلك فهي ليست تطبيقات 32 بت بعد الآن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top