Volver a descargar el archivo desde el byte []

Este codigo

string xml = XmlHelper.ToXml(queryTemplate);

byte[] xmlb = StringHelper.GetBytes(xml);

var cd = new System.Net.Mime.ContentDisposition
{
    // for example foo.bak
    FileName = String.Format("{0}_v{1}.xml", queryModel.Name, queryModel.Version),

    // always prompt the user for downloading, set to true if you want
    // the browser to try to show the file inline
    Inline = false,
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(xmlb, "application/xml");

Resulta que la codificación de cadena es incorrecta después de que se convierte enbyte[]

Así que necesito poner elstring inmediatamente en el archivo, como este

FileStream xfile = new FileStream(Path.Combine(dldir, filename), FileMode.Create, System.IO.FileAccess.Write);
hssfwb.Write(xfile);

Pero no quiero hacer esto, no necesito el archivo después de la descarga. Solo necesito devolverlo al navegador cuando se descarguen los archivos y no quiero tener que lidiar con la eliminación de archivos después, lo cual puede ser bastante agitado cuando hay muchas solicitudes.

Cómo corregir la codificación de caracteres destring abyte[] ¿Y correctamente devolverlo al navegador?

losGetBytes la función se ve así

public static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    return bytes;
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta