Проблема загрузки dll веб-приложения ASP.Net - PullRequest
2 голосов
/ 16 июня 2011

У меня есть пользовательская dll, загруженная в мое веб-приложение, я обновил ее и перезагрузил ссылку в моем основном веб-приложении.По сути, он работает так, как пользователь загружает файл, который проверяется функцией в DLL.Затем пользователь может нажать кнопку в разделе результатов, которая перенаправляет в основной раздел приложения, чтобы у него была возможность перезапустить программу проверки;Я говорю «раздел», потому что веб-приложение использует одну страницу с двумя элементами div, одним для формы и другим для результатов, а затем код заменяет видимость div формы на div результатов, вот базовый макет, который необходимо пояснить.

<body>
  <div id="divForm" style="visibility: visible;">
  </div>

<div id="divResults">
  </div>
</body>

Вызов перенаправления в следующем коде выглядит следующим образом:

protected void btnReturn_Click(object sender, EventArgs e)
        {
            Response.Redirect("http://localhost/file_checker/");
        }

И основной фрагмент средства проверки файлов:

protected void Page_Load(object sender, EventArgs e)
{
    divForm.Visible = true;
    divResults.Visible = false;
    if (Page.IsPostBack)
    {
       //Do file checking

       //Show results
       divResults.Visible = true;
       divForm.Visible = false;
    }
}

Веб-приложениеотлично работает на первом проходе, однако я замечаю странное поведение после каждого последующего прохода.Например, я заметил, что на странице результатов отображается устаревшее содержимое из более старой версии dll, т. Е. Отображается строка, сгенерированная более старой версией dll, я удалил эту строку, но она все еще генерируется.Я не уверен, правильно ли я перенаправляю или есть какое-то другое фундаментальное недоразумение с тем, как работают перенаправления.Приветствуется любая помощь или понимание.

ОБНОВЛЕНИЕ:

Хорошо, вместо перенаправления, я просто очистил сетку в разделе результатов и поменял стили div, чтобы показать основной раздел и скрытьраздел результатов выглядит следующим образом:

protected void btnReturn_Click(object sender, EventArgs e)
        {
            //Clear the Gridview and show the upload Form
            GridView1.DataSource = null; //<--Is popoulated by a DataTable
            divForm.Visible = true;
            divResults.Visible = false;

            //Response.Redirect("http://localhost/file_checker/");
        }

Кажется, это решает проблему, у меня есть вопрос: я использую Datatable для заполнения Gridview на странице результатов.Может ли Datatable автоматически располагаться после каждой загрузки страницы или события нажатия кнопки?Или это будет продолжаться?Я просто хочу избежать проблем с утечкой памяти, поскольку каждая загрузка страницы создает новый объект DataTable.

1 Ответ

2 голосов
/ 16 июня 2011

Response.Redirect отправляет ответ 302 в браузер. Затем браузер отправляет новый запрос на новое местоположение. Таким образом, это не операция на стороне сервера, и браузер может кэшировать ответ и не делать вызов снова. Попробуйте добавить параметр строки запроса, чтобы браузер выполнил истинный запрос. Если у вас есть доступный fiddler, вы можете использовать его для проверки, но вы, вероятно, получаете страницу из кэша.

protected void btnReturn_Click(object sender, EventArgs e)
        {
            Response.Redirect(String.Format("http://localhost/file_checker/?{0}", DateTime.Now.Ticks));
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...