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





Вызвать метод Render все еще довольно просто. Просто создайте экземпляр своей страницы, создайте заглушку WebContext вместе с объектом WebRequest и вызовите метод Render страницы. После этого вы можете делать с результатами все, что захотите.
В качестве альтернативы, напишите небольшой скрипт curl или wget для загрузки и хранения тех страниц, которые вы хотите сделать статичными.
Вы можете использовать wget (инструмент командной строки) для рекурсивного запроса каждой страницы и сохранения их в html-файлах. Он обновит все необходимые ссылки в результирующем html, чтобы они ссылались на файлы .html вместо .aspx. Таким образом, вы можете закодировать весь свой сайт, как если бы вы использовали страницы, сгенерированные сервером (легче тестировать), а затем преобразовать его в статические страницы.
Если вам нужен статический HTML только по соображениям производительности, я бы предпочел использовать кеширование вывода ASP.Net.
Я рекомендую вам сделать это очень простым способом и не делать это в коде. Это позволит вашему коду CMS делать то, что должен делать код CMS, и сделает его максимально простым.
Используйте такой продукт, как HTTrack. Он называет себя «копировщиком веб-сайтов». Он сканирует сайт и создает вывод html. Это быстро и бесплатно. Вы можете просто запустить его с любой частотой, которую считаете лучшей.
Он отделяет ваши потребности в выводе HTML от дизайна и реализации вашей CMS. Это снижает сложность и дает вам некоторую гибкость в том, как вы выводите HTML, без введения точек сбоя в коде CMS.
@ckarras: Я бы предпочел не использовать внешний инструмент, потому что я хочу, чтобы HTML-страницы создавались программно, а не вручную.
@jttraino: у меня нет временного интервала, в течение которого сайт должен быть выведен - uotput должен происходить, когда пользователь создает новый сайт.
@Frank Krueger: Я действительно не понимаю, как создать экземпляр моей страницы с помощью WebContext и WebRequest.
Я искал "wget" в searchdotnet и нашел Почта о классе .net под названием WebClient. Кажется, он делает то, что я хочу, если я использую метод DownloadString () - получает строку с определенного URL-адреса. Проблема в том, что, поскольку наша CMS должна быть авторизована, когда метод пытается достичь страницы, которую он перебрасывает на страницу входа, и, следовательно, возвращает HTML-код login.aspx ...
Есть какие-нибудь мысли о том, как я могу продолжить отсюда?
Кажется, я нашел решение своей проблемы с помощью метода Server.Ecxcute.
Я нашел статья, который продемонстрировал его использование:
TextWriter textWriter = new StringWriter();
Server.Execute("myOtherPage.aspx", textWriter);
Затем я проделываю несколько манипуляций с textWriter и вставляю его в HTML-файл. И вуаля! Оно работает!
Я нашел в статье слишком много. Лучше найду этот попроще msdn.microsoft.com/en-us/library/fb04e8f7.aspx