2016-11-23 34 views
1

我正在制作一个在IIS上创建多个应用程序池和网站的应用程序。启用32位IIS应用程序池c#

我需要在其中一个启用32位应用程序。

如何以编程方式执行此操作?

+1

你是什么意思 “编程”?你是指在该游泳池上运行的应用程序内?我非常怀疑你可以从池内改变它。 –

+0

[本文](https://blogs.msdn.microsoft.com/rakkimk/2007/11/03/iis7-running-32-bit-and-64-bit-asp-net-versions-at-the-同一时间不同工人进程/)显示如何从命令行(以及其他方法)执行此操作。 –

+1

powershell可以做到这一点,请参阅https://forums.iis.net/t/1181048.aspx,只使用c#我不认为这是可能的,你仍然需要AppCmd.exe –

回答

1

您没有指定IIS版本。 对于旧的,这里描述的一个可以使用的DirectoryServices: https://msdn.microsoft.com/en-us/library/ms525598%28v=vs.90%29.aspx?f=255&MSPPError=-2147217396

32位的属性应该是“Enable32BitAppOnWin64”如果我rememeber正确。

对于IIS 7+,你应该使用Microsoft.Web.Administration命名空间如下所述: https://www.iis.net/learn/manage/scripting/how-to-use-microsoftwebadministration

这是一个管理API。检查发布的参考文献或进行一些实验。

此外,如果IIS Metabase Compatibility与IIS 7一起安装,则第一个解决方案也应该可以工作。

例使用的DirectoryServices(在较新的系统不可用):

var appPool = new DirectoryEntry(string.Format("IIS://{0}/w3svc/apppools/DefaultAppPool", Environment.MachineName)); 
      //Integrated mode 
      appPool.InvokeSet("ManagedPipelineMode", new object[] { 0 }); 
      appPool.InvokeSet("MaxProcesses", new object[] { 1 }); 
      //Enable 32-bit Applications 
      appPool.InvokeSet("Enable32BitAppOnWin64", new object[] { true }); 

      appPool.CommitChanges(); 
+0

我读了帖子你给我发几次,但没有找到解决方案。 – TiraULTI

+0

用示例更新后。一探究竟 – Roland