Я только что получил и решил аналогичную проблему: от моего ASP.NET приложение MVC у меня есть контроллер, который возвращает raw XML, который я хочу видеть в веб-браузере в виде дерева DOM.
Chrome все в порядке, но IE 11 просто показывает пустую страницу.
проблема, кажется, в HTTP-заголовке" Content-Type": если он не содержит значения кодировки, т. е. просто показывает пустую страницу (если у вас нет заголовка 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>
Примечание: убедитесь, что вы указали правильную длину содержимого, хотя я не проверял, что происходит, если заголовок длины содержимого отсутствует или имеет неправильное значение. Кроме того, я удалил X - заголовки, сгенерированные IIS из этой распечатки, но их можно оставить.
а после работает в IE и Хром:
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, это означает, что если вы хотите визуализировать raw 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);
С уважением.