Allora non capisco, quello che ho fatto è stato convertire questa parte di codice:

codice:
        
      ' imposta le headers 
        Response.Clear()
        Response.AddHeader("Content-Disposition", "attachment; filename=""" & fi.Name & """")
        Response.AddHeader("Content-Length", fi.Length.ToString())
        Response.ContentType = "application/octet-stream"

        ' leggo dal file e scrivo nello stream di risposta 
        Response.WriteFile(filePath)
        Response.End()

in questo modo:

codice:
FileInfo file = new FileInfo(path+ fileName);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.WriteFile(path + file.Name);
Response.End();
compare la dialog, il file viene scaricato, ma è sempre corrotto.