C# 从C向客户端代码返回Xml字符串#
我正在从用户文件中读取一个文件,该文件包含我在通用处理程序中处理的xml,然后传递给客户机 我遇到的问题是当我将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字符串到达客户机时保持其原样
我正在使用服务器上的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声明,则该文件将不存在。