tengo sitio servicio services saber que publicar net internet instalar information crear como asp agregar administrador .net iis version-detection

.net - servicio - publicar sitio web iis windows server 2012



Cómo determinar programáticamente la versión de IIS instalada (6)

¿Cuál sería la forma preferida de determinar de manera programática cuál es la versión actualmente instalada de Microsoft Internet Information Services (IIS)?

Sé que se puede encontrar mirando la clave MajorVersion en HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / W3SVC / Parameters.

¿Esta sería la forma recomendada de hacerlo, o hay algún método más seguro o más hermoso disponible para un desarrollador de .NET?


Puede construir una WebRequest y enviarla al puerto 80 en una dirección IP loopback y obtener el encabezado HTTP del servidor.

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://127.0.0.1/"); HttpWebResponse myHttpWebResponse = null; try { myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); } catch (WebException ex) { myHttpWebResponse = (HttpWebResponse)ex.Response; } string WebServer = myHttpWebResponse.Headers["Server"]; myHttpWebResponse.Close();

No estoy seguro de si esa es una mejor manera de hacerlo, pero sin duda es otra opción.


Para identificar la versión desde fuera del proceso de IIS, una posibilidad es como a continuación ...

string w3wpPath = Path.Combine( Environment.GetFolderPath(Environment.SpecialFolder.System), @"inetsrv/w3wp.exe"); FileVersionInfo versionInfo = FileVersionInfo.GetVersionInfo(w3wpPath); Console.WriteLine(versionInfo.FileMajorPart);

Para identificarlo desde dentro del proceso de trabajo en tiempo de ejecución ...

using (Process process = Process.GetCurrentProcess()) { using (ProcessModule mainModule = process.MainModule) { // main module would be w3wp int version = mainModule.FileVersionInfo.FileMajorPart } }


public int GetIISVersion() { RegistryKey parameters = Registry.LocalMachine.OpenSubKey("SYSTEM//CurrentControlSet//Services//W3SVC//Parameters"); int MajorVersion = (int)parameters.GetValue("MajorVersion"); return MajorVersion; }


Lo hice de esta manera (usando Powershell):

function Validate-IISVersion([switch] $ContinueOnError = $false) { if ($ContinueOnError) { $ErrorActionPreference = "SilentlyContinue" } else { $ErrorActionPreference = "Stop" } # Using GAC to ensure the IIS (assembly) version $IISAssembly = [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration") $IISVersion = $IISAssembly.GetName().Version $IISVersionString = [string]::Format("{0}.{1}.{2}.{3}", $IISVersion.Major, $IISVersion.Minor, $IISVersion.Build, $IISVersion.Revision) if (!$IISVersionString.Equals("7.0.0.0")) { if ($ContinueOnError) { Write-Host "`nConflicting IIS version found! [Version: $IISVersionString]`t " -NoNewline -ForegroundColor Red } Write-Error "Conflicting IIS version found [$IISVersionString]! @ $(Split-Path $MyInvocation.ScriptName -leaf)" return $false } else { return $true } }


No es necesario escribir código. Puedes encontrarlo en el editor del Registro

ir a ejecutar -> escribir - regedit ->

La rama de registro LOCAL MACHINE contiene la información de versión para Windows 7.

La rama inicial está en (HKLM) HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / InetStp / VersionString

Nota: Los espacios son para fines de lectura.


El siguiente comando me ayudó a encontrar la versión de IIS correctamente en IIS 8.5 (Windows 2012 R2) y 7.5 Windows 7 SP1.

[System.Diagnostics.FileVersionInfo] :: GetVersionInfo ("$ env: SystemRoot / system32 / inetsrv / InetMgr.exe"). ProductVersion

Referencia:

https://forums.iis.net/p/1171695/1984536.aspx : Answer from f00_beard