为什么IE不能将我的输出识别为XML?

时间:2010-11-28 19:36:29

标签: c# xml internet-explorer

我构建了以下代码来输出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 个答案:

答案 0 :(得分:3)

您的网页指令需要设置ContentType="application/xml"

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