これに汎用ハンドラー(.ashx)を使用するのはどうですか?
ファイル名、contenttyp、コンテンツ自体など、読み込みに固有の情報を追加する必要があります。サンプルはあなたに良いスタートを与えるはずです。
public class GetDownload : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (!string.IsNullOrEmpty(context.Request.QueryString["IDDownload"]))
{
context.Response.AddHeader("content-disposition", "attachment; filename=mydownload.zip");
context.Response.ContentType = "application/octet-stream";
byte[] rawBytes = // Insert loading file with IDDownload to byte array
context.Response.OutputStream.Write(rawBytes, 0, rawBytes.Length);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
汎用ハンドラーは、次のようにURLから呼び出されます。
<a href="/GetDownload.ashx?IDDownload=1337">click here to download</a>