2008-09-11 20 views
5

Estamos creando un CMS. El sitio será construido y administrado por los usuarios en páginas aspx, pero nos gustaría crear un sitio estático de HTML. La forma en que lo estamos haciendo ahora es con el código que encontré here que sobrecarga el método Render en la página Aspx y escribe la cadena HTML en un archivo. Esto funciona bien para una sola página, pero lo que sucede con nuestro CMS es que queremos crear automáticamente algunas páginas HTML para un sitio desde el principio, incluso antes de que el creador haya editado algo en el sistema. ¿Alguien sabe de alguna manera de hacer esto?Exportar ASPX a HTML

Respuesta

2

Llamar al método Render sigue siendo bastante simple. Simplemente cree una instancia de su página, cree un stub WebContext junto con el objeto WebRequest y llame al método Render de la página. Entonces eres libre de hacer lo que quieras con los resultados.

O bien, escriba un pequeño script curl o wget para descargar y almacenar las páginas que quiera hacer estáticas.

2

Puede usar wget (una herramienta de línea de comandos) para consultar recursivamente cada página y guardarlas en archivos html. Actualizaría todos los enlaces necesarios en el html resultante para hacer referencia a los archivos .html en lugar de .aspx. De esta forma, puede codificar todo su sitio como si estuviera usando páginas generadas por el servidor (más fácil de probar), y luego convertirlo a páginas estáticas.

Si necesita HTML estático solo por motivos de rendimiento, mi preferencia sería utilizar el almacenamiento en caché de ASP.Net.

2

Te recomiendo que hagas esto de una manera muy simple y no lo hagas en el código. Le permitirá a su código CMS hacer lo que debería hacer el código CMS y lo mantendrá lo más simple posible.

Use un producto como HTTrack. Se llama una "copiadora de sitios web". Arrastra un sitio y crea resultados html. Es rápido y gratis. Puedes hacer que funcione a la frecuencia que creas mejor.

Desacopla las necesidades de salida HTML del diseño e implementación de CMS. Reduce la complejidad y le da cierta flexibilidad en la forma en que saca el código HTML sin introducir puntos de falla en su código CMS.

1

@ckarras: Prefiero no utilizar una herramienta externa, porque quiero que las páginas HTML se creen mediante programación y no de forma manual.

@jttraino: No tengo un intervalo de tiempo en el que el sitio deba producirse; el uotput debe ocurrir cuando un usuario crea un sitio nuevo.

@Frank Krueger: Realmente no entiendo cómo crear una instancia de mi página usando WebContext y WebRequest.

He buscado "wget" en searchdotnet, y llegué al a post sobre una clase .net llamada WebClient. Parece que hago lo que quiero si uso el método DownloadString(): obtiene una cadena de una url específica. El problema es que porque nuestro CMS debe estar conectado, cuando el método intenta llegar a la página se lanza a la página de inicio de sesión, y por lo tanto devuelve el HTML de login.aspx ...

Cualquier idea de cómo puede continuar desde aqui?

4

Parece que he encontrado la solución para mi problema utilizando el método Server.Ecxcute.

he encontrado un article que demonstared el uso de la misma:

TextWriter textWriter = new StringWriter(); 
Server.Execute("myOtherPage.aspx", textWriter); 

Entonces hago un par de maniulatons en el TextWriter, y lo inserta en un archivo html. Et voila! ¡Funciona!

+0

He encontrado demasiado en el artículo. Prefiero encontrar esto más simple http://msdn.microsoft.com/en-us/library/fb04e8f7.aspx –