[英]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.