Ich habe gerade ein ähnliches Problem erhalten und gelöst: In meiner ASP.NET MVC-Anwendung habe ich einen Controller, der unformatiertes XML zurückgibt, das ich im Webbrowser als DOM-Baum sehen möchte.
Chrome macht es gut, aber IE 11 zeigt einfach eine leere Seite.
Das Problem scheint der HTTP-Header "Content-Type" zu sein: Wenn er keinen Zeichensatzwert enthält, zeigt der IE einfach eine leere Seite an (es sei denn, Sie haben einen Content-Disposition-Header. In diesem Fall bietet Ihnen der IE das Speichern des XML an). .
Die folgende HTTP-Antwort ist für Chrome in Ordnung, der IE zeigt jedoch eine leere Seite an:
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>
Hinweis: Stellen Sie sicher, dass Sie die richtige Inhaltslänge angeben, obwohl ich nicht getestet habe, was passiert, wenn der Header für die Inhaltslänge fehlt oder einen falschen Wert hat. Außerdem habe ich die von IIS generierten X-Header aus diesem Ausdruck entfernt, aber es ist sicher, sie zu belassen.
Folgendes funktioniert jedoch sowohl unter IE als auch unter 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>
Der einzige Unterschied ist das Hinzufügen ; charset=utf-8
im Content-Type-Header.
Für ASP.NET MVC-Entwickler bedeutet dies, dass Sie Folgendes nicht verwenden können, wenn Sie unformatiertes XML rendern und IE unterstützen möchten:
string xmldata = ...
return this.File(Encoding.UTF8.GetBytes(xmldata), "application/xml");
Stattdessen funktioniert Folgendes:
string xmldata = ...
Response.ContentType = "application/xml";
Response.ContentEncoding = Encoding.UTF8;
Response.AddHeader("Content-Length", Convert.ToString(xmldata.Length));
return this.Content(xmldata);
Mit freundlichen Grüßen.