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