Сохранение HttpResponse / Запрос в файловую систему - PullRequest
0 голосов
/ 15 марта 2010

Вот мой сценарий.Пользователь заполняет эту большую страницу, которая динамически создается на основе значений БД.Эти значения могут измениться.Когда пользователь заполняет страницу и нажимает «Отправить», мы хотим сохранить копию страницы в виде html на сервере. Таким образом, если текст или формулировка изменятся, когда они вернутся к просмотру опубликованной информации, это исторически верно.1001 *

Так что мне в основном нужно сделать это

protected void buttonSave_Click(object sender, EventArgs e)
{
    //collect information into an object to save it in the db       
    bool result = BusinessLogic.Save(myBusinessObject);

    if (result)
        //!!! Here is where I need to save this page as an html file on my servers IFS!!!!
    else
        //whatever

    Response.Redirect("~/SomeOtherPage.aspx");
}

Любая помощь очень ценится.Кроме того, я не могу просто запросить данные из URL, потому что параметры строки запроса в этом случае большие нет.Ключ для извлечения информации базы данных (на самом высоком уровне) находится в сеансе, поэтому я не могу просто запросить URL и сохранить его.

Спасибо!

Ответы [ 2 ]

1 голос
/ 16 марта 2010

Я думаю, что в «другом случае» вы можете вызвать вид элемента управления HTMLSnap, который получит моментальный снимок URL-адреса в виде изображения. Но это не будет иметь введенные пользователем значения, хотя. Он будет иметь снимок страницы при загрузке.

http://www.guangmingsoft.net/htmlsnapshot/help.htm

Как уже упоминали другие пользователи, вы не можете получить введенные пользователем значения, поскольку у HTML-страницы есть и все другие ресурсы, которые трудно получить на стороне сервера.

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

0 голосов
/ 16 марта 2010

Вам придется столкнуться с несколькими проблемами здесь.

Прежде всего, если я вас правильно понял, вы хотите перехватить HTML, когда он генерируется. Вы можете сделать это несколькими способами - то есть вы можете написать объект Filter - реализацию System.IO.Stream, которая в дополнение к прохождению через оригинальный поток данных HTML копирует его на стороне. Такой объект можно подключить к HttpResponse через его свойство Filter.

Имейте в виду, что не все данные, отправляемые в HttpResponse, допускают фильтрацию.

Тогда вам придется столкнуться с другой проблемой: к тому времени, как запрос «Сохранить» попадает на ваш сервер, ваша первоначальная страница исчезает. Он был отправлен пользователю как результат предыдущего запроса / ответа, поэтому, если у вас нет способа воссоздать html во втором цикле, вам придется временно сохранить его на первом цикле и «зафиксировать» на второй - когда ваш buttonSave будет выполнен.

...