Экспорт ASPX в HTML

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
6 729
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Вызвать метод 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

Eduardo Xavier 17.10.2011 19:30

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