Экспорт ASPX в HTML - PullRequest
       45

Экспорт ASPX в HTML

5 голосов
/ 11 сентября 2008

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

Ответы [ 5 ]

4 голосов
/ 15 сентября 2008

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

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

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

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

2 голосов
/ 11 сентября 2008

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

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

2 голосов
/ 11 сентября 2008

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

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

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

2 голосов
/ 11 сентября 2008

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

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

1 голос
/ 11 сентября 2008

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

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

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

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

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

...