Я только что получил и решил аналогичную проблему: из моего приложения ASP.NET MVC у меня есть контроллер, который возвращает необработанный XML, который я хочу видеть в веб-браузере в виде дерева DOM.
Chrome делает это хорошо, но IE 11 просто показывает пустую страницу.
Похоже, что проблема заключается в HTTP-заголовке «Content-Type»: если он не содержит значения кодировки, IE просто показывает пустую страницу (если у вас нет заголовка Content-Disposition, и в этом случае IE предлагает вам сохранить XML),
Итак, следующий ответ HTTP подходит для Chrome, но IE показывает пустую страницу:
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>
Примечание: Убедитесь, что вы указали правильную Content-Length, хотя я не проверял, что происходит, если заголовок Content-Length отсутствует или имеет неправильное значение. Кроме того, я удалил из этой распечатки X-заголовки, сгенерированные IIS, но их безопасно оставить.
Но следующее работает и в IE, и в 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>
Единственная разница это дополнение ; charset=utf-8
в заголовке Content-Type.
Для разработчиков ASP.NET MVC это означает, что если вы хотите визуализировать сырой XML и поддерживать IE, вы не можете использовать:
string xmldata = ...
return this.File(Encoding.UTF8.GetBytes(xmldata), "application/xml");
Вместо этого работает следующее:
string xmldata = ...
Response.ContentType = "application/xml";
Response.ContentEncoding = Encoding.UTF8;
Response.AddHeader("Content-Length", Convert.ToString(xmldata.Length));
return this.Content(xmldata);
С уважением.