将 .NET CLR 版本设置为无托管代码

问题描述 投票:0回答:4

我正在尝试为我的 asp.net core 服务构建一个安装程序,但在 IIS 应用程序池上设置

.NET CLR Version
时遇到问题。有什么办法可以设置为
No Managed Code
吗?

设置

<iis:WebAppPool ManagedRuntimeVersion="No Managed Code">
会导致错误
The worker process failed to pre-load .Net Runtime version No Managed Code.

iis wix asp.net-core
4个回答
27
投票

解决方案是在设置 ManagedRuntimeVersion 时使用“”而不是“无托管代码”。


1
投票

iis:WebAppPool/@ManagedRuntimeVersion 属性的值不能为空字符串。


1
投票

使用以下示例方法创建无托管代码的应用程序池

public void CreateApplicationPoolDotNetCore(string appPoolName)
{
    using (ServerManager serverManager = new ServerManager())
    {
         ApplicationPool newPool = serverManager.ApplicationPools.Add(appPoolName);
         newPool.ManagedRuntimeVersion = "";
         newPool.Enable32BitAppOnWin64 = true;
         newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
         serverManager.CommitChanges();
     }
}

0
投票

我无法使用“”,因为wix(5.0)正在抱怨,最糟糕的是,如果您使用ManagedRuntimeVersion =“无托管代码”,它看起来就像在应用程序池中工作,但当您打开下拉菜单时,会出现第二个“否”托管代码”,这是真正的代码。

我们通过使用自定义操作解决了这个问题,例如:

<CustomAction Id="ReconfigureAppPoolCLI"
              Directory="<your dir>"
              Execute="deferred"
              Impersonate="yes"
              Return="check"
              ExeCommand="powershell.exe -WindowStyle Hidden -NoProfile -NonInteractive -Command &quot;Start-Transcript -Path (Join-Path $env:TEMP 'iis_configure_apppool_log.txt'); Import-Module WebAdministration; try { Set-ItemProperty IIS:'\AppPools\<inset app pool name here>' -name managedRuntimeVersion -value ''; Write-Host 'Successfully set managedRuntimeVersion' } catch { Write-Error $_.Exception.Message }; Stop-Transcript&quot;" />

只需替换 & 并安排它

After="RegisterUser"
(然后 iis 设置应该完成)。脚本本身的日志将出现在 %TEMP%/iis_configure_apppool_log.txt 中

© www.soinside.com 2019 - 2024. All rights reserved.