我有一个现有的32位的ASP.NET 应用程序使用的32位非托管Dll。

如果我经营这个在64位的操作系统,将自动被LARGEADDRESSAWARE(即有机会获得全4G的虚拟存储器)?

如果没有,我能做些什么,以使它LARGEADDRESSAWARE?

谷歌上搜索了 这个问题, 但它缺乏的回答上述问题。

编辑

这个博客的 建议,ASP.NET 1.1工作进程LARGEADDRESSAWARE,但是沉默ASP.NET 2.0:

如果一个系统启动与/3gb 开关在引导。ini(仅支持 企业数据中心的版本 Windows2000和所有版本的 Windows XP和Windows服务器2003年)a 进程是联系在一起的 /LARGEADDRESSAWARE开关能"看见" 3gb.Aspnet_wp.exe 被挂在那 方式1.1版和可以 利用。

编辑2

这是另一个博客的 这表明,32位的ASP.NET 应用程序是LARGEADDRESSAWARE,但没有提及ASP.NET 版本:

我们找到部件了 主办ASP.NET 框架 利用>2演出存储器 空间

我必须说,我很惊讶在缺乏权威性信息的公布对这个问题。

有帮助吗?

解决方案

我设法获得了服务器运行Windows2003年SP2,答案似乎是肯定的,32位的ASP.NET 应用程序LARGEADDRESSAWARE,并访问的充分4G的虚拟存储器。

我建立了这个:

  • 检查w3wp.exe (32位IIS工作过程中)采用"dumpbin/头"。这表明,LARGEADDRESSAWARE位置。

  • 运行的一个32位的ASP.NET 应用程序,试图分配超过2GB的虚拟存储器:这是成功的。

我猜的结果将是同样适用于Windows2008/IIS7,但没有测试过它。

其他提示

没有它不会。为了使较大的地址,你必须运行IIS作为64位应用程序(使用不运行WOW)。这意味着您的32位托管DLL将具有与他们的64位版本来替换。

通常,asp.net将选择所述编译器选项来定位任何平台(这是默认值),当转换为64位应用程序。你所拥有的32位应用程序的问题是,有非托管32位的DLL。这些不能在64位应用程序运行。这意味着,你必须运行ASP.NET应用程序的32位应用程序,这意味着你有你的64位服务器上安装IIS的32位版本。避免这个问题的唯一方法是使用其目的是为了在64位的环境中运行那些以取代32位的非托管的DLL。一个32位应用不能使用所有64位服务器上的存储器的,因此应用程序将不能够“看到”的附加存储器。

ASP.NET应用程序将重新编译本身(提供任何环境选项被设置在编译时的目标)是一个64位的环境下,所以它们不是32位应用程序了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top