Je configure divers serveurs Windows pour héberger les applications principales asp.net et je dois être en mesure de déterminer s'ils ont installé le pack d'hébergement asp.net.
"Installer le pack .NET Core Windows Server Hosting sur le serveur . Le kit installera les modules .NET Core Runtime, .NET Core et Core. Le module ASP.NET Core. Le module crée le reverse-proxy entre IIS et le serveur Kestrel. "
Je suis en train de configurer un déploiement et je dois m'assurer que mon serveur est configuré pour pouvoir exécuter les applications principales asp.net.
En gros, je cherche une clé de registre ou un autre moyen de me dire si je dois exécuter le programme d'installation. (quelque chose de similaire à la façon dont nous dirions si les anciennes versions du framework sont installées, comme https://support.Microsoft.com/en-us/kb/318785
pour les versions précédentes)
Vous pouvez rechercher la clé de registre Microsoft .NET Core 1.1.1 - Windows Server Hosting
sous le chemin HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Updates\.NET Core
comme dans la capture d'écran ci-dessous.
Vous pouvez également utiliser PowerShell pour déterminer si la clé existe ou non.
$DotNETCoreUpdatesPath = "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Updates\.NET Core"
$DotNetCoreItems = Get-Item -ErrorAction Stop -Path $DotNETCoreUpdatesPath
$NotInstalled = $True
$DotNetCoreItems.GetSubKeyNames() | Where { $_ -Match "Microsoft .NET Core.*Windows Server Hosting" } | ForEach-Object {
$NotInstalled = $False
Write-Host "The Host has installed $_"
}
If ($NotInstalled) {
Write-Host "Can not find ASP.NET Core installed on the Host"
}
Et vous pouvez télécharger un exemple à partir de Comment déterminer l’installation d’ASP.NET Core sur un serveur Windows avec PowerShell .
Vous pouvez utiliser PowerShell pour vérifier si le module d'hébergement est enregistré avec IIS.
Dans la session powershell locale
Import-module WebAdministration
$vm_dotnet_core_hosting_module = Get-WebGlobalModule | where-object { $_.name.ToLower() -eq "aspnetcoremodule" }
if (!$vm_dotnet_core_hosting_module)
{
throw ".Net core hosting module is not installed"
}
Si vous voulez faire dans la session distante, remplacez les 2 premières lignes par
Invoke-Command -Session $Session {Import-module WebAdministration}
$vm_dotnet_core_hosting_module = Invoke-Command -Session $Session {Get-WebGlobalModule | where-object { $_.name.ToLower() -eq "aspnetcoremodule" }}
Si vous êtes autorisé à introduire des contraintes, une option consiste à n'autoriser que les "applications autonomes", car elles ne nécessitent aucune installation supplémentaire. Cela élimine également des problèmes tels que "quelle version est installée".
Si vous devez prendre en charge les «applications portables», vous pouvez simplement exécuter ce qui suit pour vérifier si dotnet.exe est disponible:
where dotnet
Vous pouvez ensuite vérifier la version:
dotnet --version
Cela vous permettrait également de vérifier la version de .NET Core une fois que cela devient une préoccupation.
Vous pouvez regarder
HKEY_LOCAL_MACHINE\LOGICIEL\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall {ab4f6e29-67a1-47d9-b2ab-43348a9bbae4}
et assurez-vous que "Microsoft .NET Core 1.0.0 - Hébergement Windows Server" est présent
Vous pouvez également double-cliquer sur DotNetCore.1.0.1-WindowsHosting.exe.
Si le pack d'hébergement .NET Core Windows Server est déjà installé, la fenêtre d'ouverture comportera
Boutons Réparer et Désinstaller et une étiquette Modify Setup.