C# 从C向客户端代码返回Xml字符串#

C# 从C向客户端代码返回Xml字符串#,c#,jquery,asp.net,xml,C#,Jquery,Asp.net,Xml,我正在从用户文件中读取一个文件,该文件包含我在通用处理程序中处理的xml,然后传递给客户机 我遇到的问题是当我将xml字符串传递给客户端时。它的格式不正确。通过客户端代码查看时,它会完全删除根标记和“标记 我正在寻找一些代码,以便在xml字符串到达客户机时保持其原样 我正在使用服务器上的System.IO从文件中读取xml public void ProcessRequest(HttpContext context) { if (context.Request.Files.Count &

我正在从用户文件中读取一个文件,该文件包含我在通用处理程序中处理的xml,然后传递给客户机

我遇到的问题是当我将xml字符串传递给客户端时。它的格式不正确。通过客户端代码查看时,它会完全删除根标记和
标记

我正在寻找一些代码,以便在xml字符串到达客户机时保持其原样

我正在使用服务器上的
System.IO
从文件中读取xml

public void ProcessRequest(HttpContext context)
{
    if (context.Request.Files.Count > 0)
    {
        string path = context.Server.MapPath("~/Temp");
        if (!Directory.Exists(path))
            Directory.CreateDirectory(path);

        var file = context.Request.Files[0];

        string fileName;

        if (HttpContext.Current.Request.Browser.Browser.ToUpper() == "IE")
        {
            string[] files = file.FileName.Split(new char[] { '\\' });
            fileName = files[files.Length - 1];
        }
        else
        {
            fileName = file.FileName;
        }

        string strFileName = fileName;
        fileName = Path.Combine(path, fileName);
        file.SaveAs(fileName);
        string msg = File.ReadAllText(fileName);
        File.Delete(fileName);

        context.Response.Write(msg);
    }
}
xml总是以“Gambardella…”开头,因为某些原因,它在发送给cient时无法读取文件的开头

下面是示例xml的图像

数据从处理程序中发送出去,但客户端会切断顶部信息。看起来我正在使用的插件正在从iframe存储(或获取)数据。iframe可能是切断xml开头的罪魁祸首吗

我使用的示例客户端代码是

,您可以简单地使用它,而不是读取文件然后发送它

Response.WriteFile(fileName);
这将返回具有正确HTTP
内容类型
头的文件内容。如果文件具有XML声明,则不会将其删除


类似以下内容,基于您的代码和未测试(没有
MemoryStream
,因为在这种情况下不需要它):

您可以简单地使用,而不是读取文件然后发送它

Response.WriteFile(fileName);
这将返回具有正确HTTP
内容类型
头的文件内容。如果文件具有XML声明,则不会将其删除


类似以下内容,基于您的代码和未测试(没有
MemoryStream
,因为在这种情况下不需要它):


您是否将filedata xml作为字符串发送给用户?“xml总是以“Gambardella…”开头,因为某些原因,它在发送给cient时无法读取文件的开头。”。我怀疑您正在使用web浏览器查看此内容。查看源代码-您可能将文件发送为
text/html
,而不是
application/xml
,这意味着浏览器将尝试将其显示为html。您是否将文件数据xml作为字符串发送给用户?“xml始终以“Gambardella…”开头。。。“由于某些原因,它在发送到cient时无法读取文件的开头。“。我怀疑您正在使用web浏览器查看此内容。查看源代码-您可能将文件发送为
text/html
,而不是
application/xml
,这意味着浏览器将尝试将其显示为html。问题是我必须在阅读后删除该文件。为了读取该文件,我必须将其保存到服务器上的一个目录中,然后读取它,然后删除它。我无法保存它返回的Response.WriteFilevoid@NickLaMarca-为什么要将其写入磁盘?您可以使用流(尤其是
MemoryStream
)执行任何操作。我正在向磁盘写入数据,以便能够从文件中读取xml。有更好的办法吗?我所要做的就是从文件中取出xml,并按原样将xml发送回数据库client@NickLaMarca-如我所说,如果您正在创建一个字符串,您只需从中创建一个
MemoryStream
,从不写入磁盘,然后使用
Response.OutputStream
将其输出。就像我问的-你为什么要先写磁盘?@Nick-我建议你检查一下源文件。代码对文件没有任何作用。如果该文件不包含XML声明,它将不存在。问题是我必须在读取后删除该文件。为了读取该文件,我必须将其保存到服务器上的一个目录中,然后读取它,然后删除它。我无法保存它返回的Response.WriteFilevoid@NickLaMarca-为什么要将其写入磁盘?您可以使用流(尤其是
MemoryStream
)执行任何操作。我正在向磁盘写入数据,以便能够从文件中读取xml。有更好的办法吗?我所要做的就是从文件中取出xml,并按原样将xml发送回数据库client@NickLaMarca-如我所说,如果您正在创建一个字符串,您只需从中创建一个
MemoryStream
,从不写入磁盘,然后使用
Response.OutputStream
将其输出。就像我问的-你为什么要先写磁盘?@Nick-我建议你检查一下源文件。代码对文件没有任何作用。如果文件不包含XML声明,则该文件将不存在。