我有一个涉及第三方库的项目,这个库只适用于32位系统。但是我的项目将在Windows Azure上运行,因此在Windows Azure运行我的应用程序之前,我必须将Application Pool的Enable32BitAppOnWin64属性设置为true。有哪些方法可以设置这个属性(配置、编程)?如果我只能通过编程完成,那么在代码中我必须在哪里更改它?我可以在WebRole的OnStart事件中完成吗?
我有一个涉及第三方库的项目,这个库只适用于32位系统。但是我的项目将在Windows Azure上运行,因此在Windows Azure运行我的应用程序之前,我必须将Application Pool的Enable32BitAppOnWin64属性设置为true。有哪些方法可以设置这个属性(配置、编程)?如果我只能通过编程完成,那么在代码中我必须在哪里更改它?我可以在WebRole的OnStart事件中完成吗?
我刚刚也需要做这件事情。我使用了一个启动任务来改变这个设置。
我创建了一个批处理文件,并添加了这个命令:
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:true
然后我将批处理文件添加到 Azure 配置的启动脚本中。它没有任何问题地工作。
有关启动任务的更多信息,请参见:http://msdn.microsoft.com/en-us/library/gg456327.aspx
using Microsoft.Web.Administration;
namespace KDC.UserWeb.RoleEntryPoint
{
{
public override bool OnStart()
{
Enable32BitAppPool();
return base.OnStart();
}
{
base.Run();
}
public static void Enable32BitAppPool();
{
ServerManager serverManager = new ServerManager();
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
foreach (ApplicationPool applicationPool in applicationPoolCollection)
{
if( !String.IsNullOrEmpty(applicationPool.Name) && applicationPool.Name[0] != '.' )
{
serverManager.ApplicationPools[applicationPool.Name].Enable32BitAppOnWin64 = true;
serverManager.CommitChanges();
}
}
}
}
}
注意:
默认情况下,会创建两个以 .NET 开头的应用程序池......将进行筛选,并仅选择专门为云服务创建的应用程序池以启用 32 位。