Я думаю, что самый простой способ сделать это - создать отдельную страницу, которая выполняет этот код в Page_Load (), и перенаправить на нее при нажатии кнопки.
Причина отсутствия обратной навигации в том, что браузер не знает, что страница изменилась. Поскольку кнопка «Отправить» выполняет предварительную обратную передачу, а вы возвращаете данные XML в качестве ответа на эту обратную передачу, браузер выглядит так, как будто это всего лишь преобразование текущей страницы (как если бы вы, скажем, изменили текст элемента управления Label).
«Правильный» способ сделать это - использовать какой-то тип обработчика HTTP, но у меня нет опыта, чтобы предложить правильный способ сделать это, и у вас уже есть работающий код C # для этого метода. *