Экспорт ASPX в HTML

Мы строим CMS. Сайт будет создан и управляться пользователями на страницах aspx, но мы хотели бы создать статический сайт HTML. То, как мы это делаем, теперь с кодом, который я нашел здесь, который перегружает метод Render на странице Aspx и записывает строку HTML в файл. Это отлично работает для одной страницы, но дело с нашей CMS заключается в том, что мы хотим автоматически создавать несколько HTML-страниц для сайта с самого начала, даже до того, как создатель редактировал что-либо в системе. Кто-нибудь знает, как это сделать?

Ответ 1

Вызов метода Render по-прежнему довольно прост. Просто создайте экземпляр своей страницы, создайте заглушку WebContext вместе с объектом WebRequest и вызовите метод Render на странице. Затем вы можете делать все, что хотите, с результатами.

В качестве альтернативы, напишите немного curl или wget script, чтобы загрузить и сохранить страницы, которые вы хотите сделать статическими.

Ответ 2

Кажется, я нашел решение для своей проблемы с помощью метода Server.Ecxcute.

Я нашел article, который показал его использование:

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

Затем я делаю несколько maniulatons в textWriter и вставляю его в html файл. И вуаля! Он работает!

Ответ 3

Вы можете использовать wget (инструмент командной строки) для рекурсивного запроса каждой страницы и сохранения их в html файлах. Он обновил бы все необходимые ссылки в полученном html, чтобы ссылаться на файлы .html, а не на .aspx. Таким образом, вы можете закодировать весь свой сайт, как если бы вы использовали серверные страницы (проще тестировать), а затем преобразовывали их в статические страницы.

Если вам нужен статический HTML только для удобства производительности, моим предпочтением будет использование кэширования вывода ASP.Net.

Ответ 4

Я рекомендую вам сделать это очень просто и не делайте этого в коде. Это позволит вашему коду CMS делать то, что должен сделать код CMS, и будет держать его как можно проще.

Используйте такой продукт, как HTTrack. Он называет себя "копиром веб-сайта". Он сканирует сайт и создает html-выход. Это быстро и бесплатно. Вы можете просто запустить его на любой частоте, которую вы считаете лучшей.

Он отделяет ваши потребности вывода HTML от вашего дизайна и реализации CMS. Это уменьшает сложность и дает вам некоторую гибкость в том, как вы выводите HTML, не вводя точки отказа в свой код CMS.

Ответ 5

@ckarras: я бы предпочел не использовать внешний инструмент, потому что хочу, чтобы страницы HTML создавались программно, а не вручную.

@jttraino: у меня нет временного интервала, в котором должен быть выведен сайт: uotput должен произойти, когда пользователь создает новый сайт.

@Frank Krueger: Я действительно не понимаю, как создать экземпляр моей страницы с помощью WebContext и WebRequest.

Я искал "wget" в searchdotnet и получил сообщение о классе .net, называемом WebClient. Кажется, я делаю то, что хочу, если я использую метод DownloadString() - получает строку из определенного URL-адреса. Проблема заключается в том, что, поскольку наша CMS должна быть зарегистрирована, когда метод пытается добраться до страницы, которую он загрузил на страницу входа, и, следовательно, возвращает HTML-код login.aspx...

Любые мысли о том, как я могу продолжать здесь?