In asp usavo questa cosa qui che mi permetteva di puntare un file accessibile col FSO e farne il download.... in aspnet fa ancora il suo dovere usando la direttiva di pagina aspcompat="true", ma è "riscrivibile" usando oggetti migliori/più nuovi/più efficienti?

codice:
    Protected Sub downloader(ByVal nomefile As String)
        Dim PercorsoFile = ConfigurationManager.AppSettings("DDTpath") & nomefile
        PercorsoFile = Replace(PercorsoFile, "/", "\")
        Response.Buffer = True
        Response.Clear()

        Dim ADOStream = Server.CreateObject("ADODB.Stream")
        ADOStream.Open

        ADOStream.Type = 1  ' Set binary stream

        Dim FS = Server.CreateObject("Scripting.FileSystemObject")
        If FS.FileExists(PercorsoFile) Then
            Dim FileStream = FS.GetFile(PercorsoFile)
            Dim DimensioneFile = FileStream.Size

            ADOStream.LoadFromFile(PercorsoFile)

            nomefile = Mid(PercorsoFile, InStrRev(PercorsoFile, "\") + 1)
            NomeFile = Replace(NomeFile, " ", "_")
            Response.ContentType = "application/octet-stream"
            Response.AddHeader("Content-Disposition", "attachment; filename=" & NomeFile)
            Response.AddHeader("Content-Length", DimensioneFile)

            For i = 0 To ADOStream.size
                i = i + 128000
                Response.BinaryWrite(ADOStream.Read(128000))
                Response.Flush()
            Next

            FS = Nothing
        End If
    End Sub