asp.net-core.net-core

How to determine if asp.net core has been installed on a windows server


I'm setting up various windows servers to host asp.net core apps, and I need to be able to determine if they have the asp.net hosting bundle installed.

https://docs.asp.net/en/latest/publishing/iis.html#install-the-net-core-windows-server-hosting-bundle says:

"Install the .NET Core Windows Server Hosting bundle on the server. The bundle will install the .NET Core Runtime, .NET Core Library, and the ASP.NET Core Module. The module creates the reverse-proxy between IIS and the Kestrel server."

I'm setting up a deployment, and I need to make sure my server is configured so I can run asp.net core apps.

I'm looking, basically, for a registry key or some other way to tell me if I should run the installer setup. (something like the way we'd tell if older versions of the framework are installed, like https://support.microsoft.com/en-us/kb/318785 does for earlier versions)


Solution

  • You can use powershell to check if the hosting module is registered with IIS

    In the local powershell session

    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"
    }
    

    If you want to do in the remote session replace first 2 lines with

    Invoke-Command -Session $Session {Import-module WebAdministration}
    $vm_dotnet_core_hosting_module = Invoke-Command -Session $Session {Get-WebGlobalModule | where-object { $_.name.ToLower() -eq "aspnetcoremodule" }}