Acabei de receber e resolvi um problema semelhante: do meu aplicativo ASP.NET MVC, tenho um controlador que retorna XML bruto que desejo ver no navegador da Web como uma árvore DOM.
O Chrome faz isso bem, mas o IE 11 simplesmente mostra uma página em branco.
O problema parece ser o cabeçalho HTTP "Content-Type": se ele não contém um valor charset, o IE simplesmente mostra uma página em branco (a menos que você tenha um cabeçalho Content-Disposition, caso em que o IE oferece você salvar o XML).
Portanto, a seguinte resposta HTTP está correta para o Chrome, mas o IE mostra uma página em branco:
HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/xml
Server: Microsoft-IIS/8.0
Date: Fri, 25 Jul 2014 14:29:02 GMT
Content-Length: 693
<?xml version="1.0" encoding="utf-16"?><data>...</data>
Observação: certifique-se de fornecer o comprimento de conteúdo correto, embora eu não tenha testado o que acontece se o cabeçalho Content-Length estiver faltando ou se tiver um valor incorreto. Além disso, removi os cabeçalhos X gerados pelo IIS a partir dessa impressão, mas é seguro deixá-los.
Mas o seguinte funciona no IE e no Chrome :
HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Content-Type: application/xml; charset=utf-8
Server: Microsoft-IIS/8.0
Date: Fri, 25 Jul 2014 14:29:02 GMT
Content-Length: 693
<?xml version="1.0" encoding="utf-16"?><data>...</data>
A única diferença é a adição de ; charset=utf-8
no cabeçalho Content-Type.
Para desenvolvedores ASP.NET MVC, isso significa que, se você deseja renderizar XML bruto e suportar o IE, não poderá usar:
string xmldata = ...
return this.File(Encoding.UTF8.GetBytes(xmldata), "application/xml");
Em vez disso, os seguintes trabalhos:
string xmldata = ...
Response.ContentType = "application/xml";
Response.ContentEncoding = Encoding.UTF8;
Response.AddHeader("Content-Length", Convert.ToString(xmldata.Length));
return this.Content(xmldata);
Atenciosamente.