visual studio for deploy c# iis-7 msbuild iis-6 web-deployment

c# - studio - ¿Cómo puedo detener o iniciar un sitio web en IIS(6.0 y 7.0) mediante programación con MsBuild?



web deploy visual studio 2017 (3)

Entonces tienes tu respuesta anterior para IIS7. Lo que te falta es IIS6. Así que aquí tienes. Esto es usar un objeto de interoperabilidad COM, ya que eso es todo lo que está disponible para IIS 6. Además, como está en vb, tendrá que averiguar cómo convertirlo. http://www.codeproject.com/Articles/16686/A-C-alternative-for-the-Visual-Basic-GetObject-fun debe ponerlo en el camino correcto. también puedes crear un proyecto vb solo para este código, pero eso es un poco tonto.

Dim WebServiceObj As Object dim IisSiteId as Integer = 0 WebServiceObj = GetObject("IIS://localhost/W3SVC/" & IisSiteId) WebServiceObj.Stop() WebServiceObj.Start()

Tengo servidores Windows Server 2003 (IIS 6.0) y Windows Server 2008 (IIS 7.0), y uso MSBuild para implementar aplicaciones web.

Necesito hacer una implementación segura, y hacer esto:

  1. Detenga un sitio web en IIS 6 (o una aplicación en IIS 7), no detenga AppPool.

  2. Compruebe si el sitio web está detenido; no corras.

  3. Si el sitio web está detenido, realice otra tarea para implementar.

  4. Inicie el sitio web IIS 6 (o Aplicación en IIS 7),

¿Cómo puedo conseguir esto?

Actualización: Clave para mí: IIS6WebSite e IIS6AppPool (y para IIS7), ¿se debe esperar al estado detenido al intentar detener el sitio web o la AppPool?

Cuando ejecuto Stop Action for Website (o Stop Action for AppPool), necesito estar seguro de que el 100% de ese sitio web está detenido, y luego, y solo si el sitio web está detenido, puedo ejecutar otros objetivos.


Al agregar una referencia a Microsoft.Web.Administration (que se puede encontrar en X:/Windows/System32/inetsrv , o su equivalente en sistemas) puede lograr un buen control administrado de la situación con IIS7, como se muestra a continuación:

namespace { using System; using System.Linq; using Microsoft.Web.Administration; class Program { static void Main(string[] args) { var server = new ServerManager(); var site = server.Sites.FirstOrDefault(s => s.Name == "Default Web Site"); if (site != null) { //stop the site... site.Stop(); if (site.State == ObjectState.Stopped) { //do deployment tasks... } else { throw new InvalidOperationException("Could not stop website!"); } //restart the site... site.Start(); } else { throw new InvalidOperationException("Could not find website!"); } } } }

Obviamente, adapte esto a sus propios requisitos y, a través de su secuencia de comandos de desarrollo de implementación, ejecute la aplicación resultante.

Disfrutar. :)


  • Escriba una secuencia de comandos , por ejemplo, PowerShell, que detendrá / iniciará el sitio web de IIS programáticamente basándose en el argumento de la línea de comandos, por ejemplo, start-stop.ps1 /stop 1

  • Ponlo en el script MsBuild como un paso personalizado

Compruebe this para descubrir cómo reiniciar IIS AppPool

Referencia de objetos IIS WMI