gpt4 book ai didi

c# - XML 未在 IE 中通过响应对象正确发送到客户端

转载 作者:数据小太阳 更新时间:2023-10-29 01:52:07 25 4
gpt4 key购买 nike

我有一个上传控件,它从客户端调用处理程序并将一串 xml 发送回客户端。下面的代码在 chrome 中运行良好,但在 IE 中将奇怪的 xml 发送回客户端。

处理程序代码:

public void ProcessRequest(HttpContext context)
{
if (context.Request.Files.Count > 0)
{
var uploadInfo = context.Request.Files[0];
var uploadStream = uploadInfo.InputStream;
var upload = new byte[uploadInfo.ContentLength];
uploadStream.Read(upload, 0, uploadInfo.ContentLength);
var payload = System.Text.Encoding.UTF8.GetString(upload);

XmlDocument doc = new XmlDocument();
doc.LoadXml(payload);
context.Response.ContentType = "application/xml";
context.Response.Write(doc.OuterXml);

//context.Response.Write(payload);
}
}

在发送到客户端之前从处理程序调试的 XML 字符串(看起来正确)

<?xml version="1.0"?>  
<ApplicationData>
<DataElement name="Comments" type="String"></DataElement>
<DataElement name="ModAuthor" type="String"></DataElement>
<DataElement name="CreateDate" type="Datetime"></DataElement>
<DataElement name="Author" type="String"></DataElement>
<DataElement name="StatusDate" type="Datetime"></DataElement>
<DataElement name="StatusDisp" type="String"></DataElement>
<DataElement name="Status" type="Number"></DataElement>
<DataElement name="Approved" type="Number"></DataElement>
<DataElement name="Submitted" type="Number"></DataElement>
<DataElement name="LogNumber" type="Number"></DataElement>
</ApplicationData>

然后被发回的 XML 字符串是:

<DIV class=e><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;?</SPAN><SPAN class=pi>xml version="1.0" </SPAN><SPAN class=m>?&gt;</SPAN> </DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em" class=c><A class=b onfocus=h() onclick="return false" href="#">-</A> <SPAN class=m>&lt;</SPAN><SPAN class=t>ApplicationData</SPAN><SPAN class=m>&gt;</SPAN></DIV>
<DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>Comments</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>String</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>ModAuthor</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>String</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>CreateDate</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>Datetime</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>Author</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>String</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>StatusDate</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>Datetime</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>StatusDisp</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>String</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>Status</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>Number</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>Approved</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>Number</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="TEXT-INDENT: -2em; MARGIN-LEFT: 1em"><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;</SPAN><SPAN class=t>DataElement</SPAN> <SPAN class=t>name</SPAN><SPAN class=m>="</SPAN><B>Submitted</B><SPAN class=m>"</SPAN><SPAN class=t> type</SPAN><SPAN class=m>="</SPAN><B>Number</B><SPAN class=m>"</SPAN><SPAN class=m> /&gt;</SPAN> </DIV></DIV>
<DIV><SPAN class=b>&nbsp;</SPAN> <SPAN class=m>&lt;/</SPAN><SPAN class=t>ApplicationData</SPAN><SPAN class=m>&gt;</SPAN></DIV></DIV></DIV>

出于某种原因,XML 以完全不同的格式被翻译给客户端。

最佳答案

我有一种奇怪的感觉,这与编码有关,我曾经用 IE 遇到过类似的问题。

我在您的代码中看到您使用 UTF-8 编码将 xml 获取为字符串。尝试添加以下 header :

<?xml version="1.0" encoding="UTF-8"?>

到您的 XML 文件。我知道如果您将其遗漏,它会被自动检测到,但请尝试这样做并尝试使用 Notepad++ 之类的工具打开您的文件并以 UTF-8 编码保存。此外,如果文件是实用生成的,请检查代码并尝试强制使用 UTF-8 编码。

根据我使用网络应用程序的经验,IE 出错的地方(最多)是有一些默认值不同于 Chrome、Firefox、Opera、Safari 等的地方。如果您没有明确输入这些值,浏览器将设置它的默认值,但如果您在代码中输入它们,您将强制执行某种行为。 Chrome、Mozilla 等不需要这样做,但会“修复”IE 的解释。

上面提到的默认值之一是编码 http://social.technet.microsoft.com/Forums/en-US/winserverGP/thread/2f5cdeff-3723-43bf-a880-d4a41222e24d/

关于c# - XML 未在 IE 中通过响应对象正确发送到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com