我有一个用 C# 编写的 XML 文件,使用
StreamWriter
和以下代码:
String filename = Session.SessionID + ".xml";
String filepath = "h:\\root\\home\\mchinni-001\\www\\site1\\OUTFolder\\" + filename;
StreamWriter sw = new StreamWriter(filepath, false);
我用 XML 文件的格式化内容填充
strOut
,然后执行以下操作:
sw.WriteLine(strOut);
sw.Close();
当我检查网络服务器上的文件时,它看起来很完美(对于我的目的而言)。
然后我尝试使用以下命令下载它:
Response.ContentType = "application/xml";
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
Response.TransmitFile(filepath);
Response.End();
该下载有时有效,但大多数时候,我在下载区域收到“丢失文件”通知,并且根本没有下载任何文件(甚至不是 0 长度的文件)。
如何下载此文件?
我已经阅读了一些有关用 C# 编写 XML 文件的“正确”方法的内容,但我的代码已经生成了(出于我的目的)格式正确的 XML 文件,并且我宁愿不必进行主要/大规模重写,如果我可以避免它。
顺便说一句,我也尝试过:
Response.ContentType = "text/xml";
和
Response.ContentType = "text/plain";
但他们都没有工作过。
关闭之前请务必先
flush
StreamWriter
。这可确保在尝试传输之前所有数据都已写入文件。
包括
Response.BufferOutput = true;
,它允许服务器在将输出发送到客户端之前缓冲输出,这可以在文件下载的上下文中提供帮助。
String filename = Session.SessionID + ".xml";
String filepath = "h:\\root\\home\\mchinni-001\\www\\site1\\OUTFolder\\" + filename;
StreamWriter sw = new StreamWriter(filepath, false);
sw.WriteLine(strOut);
sw.Flush();
sw.Close();
Response.BufferOutput = true;
if (File.Exists(filepath))
{
Response.ContentType = "application/xml";
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
Response.TransmitFile(filepath);
Response.End();
}
else
{
Response.Write("File not found.");
}