Поместите ваш код генерации XML в отдельный класс. Пусть обработчик использует класс для создания XML и отправки результатов клиенту (кстати, не используйте Response. Напишите, какие технологии XML-документов вы используете для создания XML в первую очередь?).
Убедитесь, что класс может представить завершенный XML в виде строки.
На странице ASPX используйте тот же класс и назначьте строку XML для свойства data вашего элемента управления XmlDataSource.
Редактировать :
Так как вы используете XmlTextWriter и из вашего комментария вышеизложенное немного сбивает с толку, я добавлю эти детали.
Вам нужно взять код, который в данный момент генерирует XML, и поместить его в класс в папке App_Code (или, возможно, в проекте dll). Этот класс будет иметь метод, который принимает в качестве параметра XmlTextWriter.
public class XmlCreator
{
public void GenerateXml(XmlTextWriter writer)
{
//All your code that writes the XML
}
}
В вашем обработчике у вас есть этот код: -
XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);
Обратите внимание, что для Response.Write нет необходимости, и кодирование выполнено правильно.
На вашей странице ASP.NET вы используете: -
StringWriter source = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(source, Encoding.Unicode);
XmlCreator creator = new XmlCreator();
XmlCreator.GenerateXml(writer);
yourXmlDataSource.Data = source.ToString();
XmlCreator может не потребоваться для создания экземпляра, в этом случае вы можете использовать статический класс, это зависит от того, какие другие данные необходимы для подачи XM-поколения.