簡體   English   中英

在ASP.NET中正確使用Response.Write()

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM