Pregunta

He encontrado el problema de desbordamiento de pila que describe cómo hacer copia de seguridad de la metabase de IIS en C # aquí , y he tenido éxito en conseguir que para trabajar con el código de referencia aquí . Sin embargo, estoy teniendo dificultades para restaurar esas copias de seguridad (o de hecho cualquier copia de seguridad creadas manualmente en IIS) utilizando el código C #.

¿Alguien sabe cómo hacer esto, o incluso si se puede hacer? No he podido encontrar ningún ejemplo de esto en la web, a diferencia de la propia copia de seguridad.

He probado el siguiente código, pero recibirá el error 'Se inició una excepción por el destino de una invocación'

using (DirectoryEntry localhostIIS = new DirectoryEntry("IIS://LocalHost"))
{
   localhostIIS.Invoke("Restore", new object[] { string.Empty, 0, 0});
}

Ahora bien, aunque estoy seguro de que estoy llamando el método con el nombre incorrecto y / o estructura del objeto, no he sido capaz de encontrar la correcta forma de de llamar en cualquier lugar .. ..

¿Puede alguien por favor me punto en la dirección correcta?

¿Fue útil?

Solución

He intentado esto con una copia de seguridad denominado y obtuve esto funcione con algunos ajustes:

const uint MD_BACKUP_HIGHEST_VERSION = 0xfffffffe;
const uint MD_BACKUP_NEXT_VERSION = 0xffffffff;
const uint MD_BACKUP_SAVE_FIRST = 2;

using(DirectoryEntry de = new DirectoryEntry("IIS://Localhost"))
{
  // Backup using the next version number (MD_BACKUP_NEXT_VERSION)
  de.Invoke("Backup", new object[] {
      "test-backup",
      MD_BACKUP_NEXT_VERSION,
      MD_BACKUP_SAVE_FIRST
  });

  // Restore the highest version number (or specify the specific version)
  de.Invoke("Restore", new object[] {
    "test-backup",
    MD_BACKUP_HIGHEST_VERSION,
    0
  });
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top