2009-05-26 10 views
5

Mi amigo usa Visual Studio para desarrollar sitios web en ASP.NET. Ella solo usa la función de Página maestra, aparte de que es 100% normal HTML y CSS.¿Puedo exportar páginas html generadas desde el sitio web ASP.NET a través de Visual Studio?

¿Hay alguna manera de exportar el sitio web a páginas HTML basadas en sus páginas maestras?

Si no, está cargando cada página manualmente y guardando el HTML, o escribo una pequeña aplicación que lo hace.

Como alternativa, ¿alguien sabe de una herramienta para lograr algo similar?

+0

¡Una pregunta muy interesante! – User

+0

Me alegra que hayas editado el título. Pensé que "debería haber puesto" en las páginas HTML '' justo después de publicar :) – joshcomley

+0

Aclaré el título para usted. – Soviut

Respuesta

1

Visual Studio no tiene esta capacidad lista para usar. Sin embargo, debería ser posible escribir una herramienta que recorre un mapa del sitio, captura el html representado desde el objeto de respuesta y luego, escríbalo en un archivo.

+0

¡Eso era exactamente lo que tenía en mente como un "último recurso"! – joshcomley

1

Realmente no sé cómo exportar un sitio completo a una copia local.

Sin embargo, hay herramientas descargadores de sitios web. Conozco uno: TeleportPro, debería haber otros. Échales un vistazo si te parece una opción.

1

Puede darle una oportunidad a Macromedia Dreamweaver si tiene ganas de experimentar. Atiende el desarrollo de páginas del lado del cliente y del lado del servidor.

+0

+1 Solía ​​usar el sistema de plantillas de Dreamweaver en proyectos donde el cliente no tenía un back-end dinámico. Esencialmente es el sistema de página maestra en ASP.NET, pero Dreamweaver genera las páginas para usted. – Soviut

1

Al utilizar MasterPages, el contenido de la página maestra se fusiona con la página de contenido en el lado del servidor (ya sea en precompilación o en la primera solicitud de la página). Por lo tanto, debe tener las páginas de contenido y la compilación de MasterPage a través de aspnet_compile en algún momento. Consulte la sección "Comportamiento del tiempo de ejecución" en this MSDN article.

Tu amigo puede querer usar el lado servidor viejo moda incluye (que es esencialmente lo que un MasterPage está haciendo por usted de todos modos):

<!--#include virtual="/includes/header.html" --> 
<!--#include virtual="/includes/nav.html" --> 

<p> content </p> 

<!--#include virtual="includes/footer.html" --> 

Si esto es bloqueado por el servidor web/huésped de elección (algunos desactivarlo por razones de seguridad) luego crearía una página de índice principal y usaría una llamada de Ajax para llenar un DIV de contenido. Por supuesto, si Javascript está desactivado, sus visitantes no verán ningún contenido.

1

Creo que va a necesitar rodar el suyo para este. Esta función visita una URL y obtiene los contenidos: existen

Public Shared Function GetHTTPContent(ByVal url As String) As String 
    Dim req As WebRequest = System.Net.HttpWebRequest.Create(url) 
    Dim encode As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8") 
    Dim sr As New StreamReader(req.GetResponse().GetResponseStream(), encode) 
    Dim HTTPContent As String = sr.ReadToEnd 

    sr.Close() 
    sr.Dispose() 

    Return HTTPContent 

End Function 
0

Aquí está mi solución rápida que rastrea su sitio web local para archivos .aspx y genera archivos .html junto a html.

protected void ButtonGenerate_Click(object sender, EventArgs e) 
{ 
    RecursivelyGenerateHtmlFiles(Server.MapPath("~/"), new DirectoryInfo(Server.MapPath("~/"))); 
} 

private void RecursivelyGenerateHtmlFiles(string root, DirectoryInfo folder) 
{ 
    foreach (var aspxPage in folder.GetFiles("*.aspx")) 
    { 
     var destination = aspxPage.FullName.Substring(0, aspxPage.FullName.Length - 4) + "html"; 

     if (File.Exists(destination)) 
      File.Delete(destination); 

     var url = "http://" + Request.Url.Authority + "/" + aspxPage.FullName.Replace(root, ""); 
     var request = HttpWebRequest.Create(url); 

     File.WriteAllText(destination, new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd()); 
    } 

    foreach (var subDirectory in folder.GetDirectories()) 
    { 
     RecursivelyGenerateHtmlFiles(root, subDirectory); 
    } 
} 

Funcionó para mí.

Además, puede editar un archivo .bat para generar una carpeta con todos los archivos .html de su sitio. Esto es útil al dar una copia plana creativa.

set folder="Generated" 
cd /d %folder% 
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q) 
cd /d .. 
xcopy /r /d /i /s /y /exclude:exclude.txt PAHtml Generated 

Aquí está la exclusión.txt file para usar

.dll 
.cs\ 
.aspx 
.pdb 
.csproj 
.user 
.vspscc 
.config 
Cuestiones relacionadas