Экспорт 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...
Любые мысли о том, как я могу продолжить отсюда?