Важными частями являются настройка заголовков ответа. Установите заголовок типа содержимого и заголовок расположения содержимого. Вот пример:
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName)
Response.AddHeader("Content-Length", lenOfFile)
Response.ContentType = "application/octet-stream"