Почему IE не распознает мой вывод как XML? - PullRequest
4 голосов
/ 28 ноября 2010

Я построил следующий код для вывода XML:

    public static XDocument Serialize<T>(this T source) where T : class
    {
        XDocument document = new XDocument();
        XmlReflectionImporter xmlReflection = new XmlReflectionImporter();
        XmlTypeMapping xmlMapping = xmlReflection.ImportTypeMapping(typeof(T));
        XmlSerializer xmlSerializer = new XmlSerializer(xmlMapping);

        using (XmlWriter xmlWriter = document.CreateWriter())
            xmlSerializer.Serialize(xmlWriter, source);

        return document;
    }

Затем на одной из моих страниц aspx у меня есть следующий вывод:

    XDocument output = GetSomeXmlSerializedOutput();
    output.Save(Response.OutputStream);  


GetSomeXmlSerializedOutput() в основном выводится из подачи класса в метод расширения Serialize.

Заголовок страницы выглядит следующим образом:

<%@ Page Language="C#" CodeBehind="Alerts.aspx.cs" Inherits="Infinix.Diageo.WebApp.Get.Alerts" ContentType="text/xml" %>

Firefox правильно предполагает только из ContentType, что выводэто XML.IE нет.Выходной XML для справки:

<?xml version="1.0" encoding="utf-8"?>
<ALERTS xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ALERT>
    <ID>1</ID>
    <TYPE>ALERT</TYPE>
    <NAME>neim</NAME>
    <DETAIL>diteil</DETAIL>
    <DATE>11/28/2010</DATE>    
    <TIME>13:50:02</TIME>
  </ALERT>
  <ALERT>
    <ID>2</ID>
    <TYPE>EVENT</TYPE>
    <NAME>iven</NAME>
    <DETAIL>ditel</DETAIL>    
    <DATE>11/28/2010</DATE>
    <TIME>13:50:15</TIME>
  </ALERT>
  <ALERT>
    <ID>3</ID>
    <TYPE>BIRTHDAY</TYPE>
    <NAME>pijazo</NAME>    
    <DETAIL>grande!</DETAIL>
    <DATE>11/28/2010</DATE>
    <TIME>13:50:23</TIME>
  </ALERT>
</ALERTS>

Почему IE не распознает этот вывод как подлинный XML?

1 Ответ

3 голосов
/ 28 ноября 2010

Ваша директива страницы должна установить ContentType="application/xml".

<%@ Page Language="C#" CodeBehind="Alerts.aspx.cs"
    Inherits="Infinix.Diageo.WebApp.Get.Alerts" ContentType="application/xml" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...