Экспорт ASPX в HTML

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

5 ответов

Решение

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

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

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

Я нашел статью, которая продемонстрировала его использование:

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам