[英]Correct usage of Response.Write() in ASP.NET
我试图在用户访问页面时强制下载XML文件。
这是我正在使用的代码
public partial class GenerateTemplate : LayoutsPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
//.............
//Going about generating my XML
//.............
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=template.xml");
Response.Write(xmlDoc.InnerXml);
Response.Flush();
Response.Close();
}
}
我遇到一个问题,我的下载窗口无限期地挂起,而从未完成文件的下载/打开。
我究竟做错了什么? 我在这里没有布置任何对象或关闭任何连接吗?
只是其他答案的一小部分。 在下载的最后,我执行:
context.Response.Flush();
context.ApplicationInstance.CompleteRequest();
我了解到,否则下载有时无法成功完成。
此Google网上论坛帖子还指出, Response.End
引发ThreadAbortException
,您可以通过使用CompleteRequest
方法来避免这种情况。
尝试使用Response.End()
而不是Flush
and Close
那就是我过去一直在使用的东西。
您是否尝试过设置内容类型并调用Response.End()
:
protected void Page_Load(object sender, EventArgs e)
{
//.............
//Going about generating my XML
//.............
Response.Clear();
Response.ContentType = "text/xml";
Response.AddHeader("Content-Disposition", "attachment; filename=template.xml");
Response.Write(xmlDoc.InnerXml);
Response.End();
}
您说要下载文件,请使用asp.net Web表单执行以下操作:
context.Response.ContentType = //MIME type
// Set the filename
context.Response.AddHeader("content-disposition", "attachment;filename=" + queryFile);
// Stream the file to the client
context.Response.WriteFile(file);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.