문제

32 비트 관리되지 않은 DLL을 사용한 기존 32 비트 ASP.NET 응용 프로그램이 있습니다.

64 비트 OS에서 이것을 실행하면 자동으로 대형 Dressaware (즉, 전체 4GB의 가상 메모리에 액세스 할 수 있습니까?)?

그렇지 않다면, 그것을 대단한 드레스웨어로 만들려면 어떻게해야합니까?

인터넷 검색이 나타났습니다 이 질문, 그러나 위의 질문에 대한 답이 없습니다.

편집하다

이 블로그 ASP.NET 1.1 근로자 프로세스는 대단한 드레스트웨어이지만 ASP.NET 2.0에 대해 침묵합니다.

Boot.ini의 /3GB 스위치 (Windows 2000의 엔터프라이즈 및 데이터 센터 에디션에서만 지원되는 /3GB 스위치 및 Windows XP 및 Windows Server 2003의 모든 버전)와 함께 시스템이 부팅되는 경우 /greaddressaware 스위치와 연결된 프로세스 " "3GB. Aspnet_wp.exe는 버전 1.1에서 그러한 방식으로 연결되어 있으며이를 활용할 수 있습니다.

편집 2

이것은 또 다른 블로그입니다 이는 32 비트 ASP.NET 앱이 대규모 드레드웨어이지만 ASP.NET 버전을 언급하지 않음을 시사합니다.

ASP.NET 프레임 워크가 호스팅 한 구성 요소가> 2 공연 메모리 공간을 활용하고 있음을 발견했습니다.

나는이 주제에 대한 권위있는 출판 정보가 부족하다는 것에 놀랐다 고 말해야한다.

도움이 되었습니까?

해결책

Windows 2003 SP2를 실행하는 서버에 액세스 할 수 있었으며 대답은 예인 것으로 보입니다.

나는 이것을 다음과 같이 확립했다 :

  • "덤프 빈 /헤더"를 사용하여 w3wp.exe (32 비트 IIS 작업자 프로세스)를 검사합니다. 이것은 대단한 드레스웨어 비트가 설정되었음을 보여줍니다.

  • 2GB 이상의 가상 메모리를 할당하려고 시도하는 32 비트 ASP.NET 응용 프로그램을 실행 : 성공했습니다.

결과는 Windows 2008 / IIS7에 대해 동일하지만 테스트하지 않았다고 가정합니다.

다른 팁

아니요. 큰 주소를 알리려면 IIS를 64 비트 응용 프로그램으로 실행해야합니다 (WOW를 사용하지 않음). 이는 32 비트 관리되지 않은 DLL이 64 비트 버전으로 대체되어야 함을 의미합니다.

일반적으로 ASP.NET은 모든 플랫폼 (기본값)을 타겟팅하기 위해 컴파일러 옵션을 선택할 때 64 비트 응용 프로그램으로 변환됩니다. 32 비트 앱의 문제점은 관리되지 않는 32 비트 DLL이 있다는 것입니다. 64 비트 응용 프로그램에서는 실행할 수 없습니다. 즉, ASP.NET 응용 프로그램을 32 비트 응용 프로그램으로 실행해야합니다. 즉, 64 비트 서버에 32 비트 버전의 IIS를 설치해야합니다. 이를 피하는 유일한 방법은 32 비트 관리되지 않은 DLL을 64 비트 환경에서 실행하도록 설계된 것과 교체하는 것입니다. 32 비트 응용 프로그램은 64 비트 서버에서 모든 메모리를 사용할 수 없으므로 응용 프로그램이 추가 메모리를 "볼 수 없음"은 아닙니다.

ASP.NET 앱은 64 비트 환경에서 스스로 컴파일 (대상 환경 옵션을 컴파일 시간에 설정)하므로 더 이상 32 비트 앱이 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top