आप इस तरह, एक फाइल डाउनलोड करने के लिए एक HTTP हैंडलर (.ashx) का उपयोग कर सकते हैं:
DownloadFile.ashx:
public class DownloadFile : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "text/plain";
response.AddHeader("Content-Disposition",
"attachment; filename=" + fileName + ";");
response.TransmitFile(Server.MapPath("FileDownload.csv"));
response.Flush();
response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
तो फिर तुम बटन से HTTP हैंडलर कॉल कर सकते हैं ईवेंट हैंडलर क्लिक करें, इस तरह:
मार्कअप:
<asp:Button ID="btnDownload" runat="server" Text="Download File"
OnClick="btnDownload_Click"/>
कोड-पीछे:
protected void btnDownload_Click(object sender, EventArgs e)
{
Response.Redirect("PathToHttpHandler/DownloadFile.ashx");
}
HTTP हैंडलर के लिए एक पैरामीटर पासिंग:
आप बस एक क्वेरी स्ट्रिंग चर Response.Redirect()
करने के लिए, इस तरह संलग्न कर सकते हैं:
Response.Redirect("PathToHttpHandler/DownloadFile.ashx?yourVariable=yourValue");
फिर वास्तविक हैंडलर कोड में आप Request
ऑब्जेक्ट का उपयोग कर सकते हैं I n HttpContext
क्वेरी स्ट्रिंग चर मूल्य, इस तरह हड़पने के लिए:
System.Web.HttpRequest request = System.Web.HttpContext.Current.Request;
string yourVariableValue = request.QueryString["yourVariable"];
// Use the yourVariableValue here
नोट - यह जिसमें, के रूप में एक क्वेरी स्ट्रिंग पैरामीटर उपयोगकर्ता के लिए वास्तव में है क्या फ़ाइल सुझाव देने के लिए एक फ़ाइल नाम पारित करने के लिए आम बात है अगर वे उस नाम मान को ओवरराइड के साथ ओवरराइड कर सकते हैं ...
स्रोत
2013-08-28 01:26:39
आप इस समान प्रश्न देख सकते हैं: http://stackoverflow.com/questions/2378204/context-response-end-and- थ्रेड-इत्यादि-निरस्त –
'प्रतिक्रिया। अंत() '' थ्रेडएबॉर्ट अपवाद' का कारण बन रहा है। –
यह .NET ढांचे में एक बग है और कई SO प्रश्नों में रिपोर्ट किया गया है। ThreadAbort पकड़ो और किया जाना चाहिए। – debracey