Cómo implementar una descarga de archivos en asp.net

¿Cuál es la mejor manera de implementar, desde una página web, una acción de descarga usando asp.net 2.0?

Los archivos de registro para una acción se crean en un directorio llamado [raíz de la aplicación] / registros. Tengo la ruta completa y deseo proporcionar un botón que, al hacer clic, descargue el archivo de registro del servidor IIS a la PC local del usuario.

Esto ayuda:

http://www.west-wind.com/weblog/posts/76293.aspx

Response.ContentType = "application/octet-stream"; Response.AppendHeader("Content-Disposition","attachment; filename=logfile.txt"); Response.TransmitFile( Server.MapPath("~/logfile.txt") ); Response.End(); 

Response.TransmitFile es la forma aceptada de enviar archivos grandes, en lugar de Response.WriteFile.

http://forums.asp.net/p/1481083/3457332.aspx

 string filename = @"Specify the file path in the server over here...."; FileInfo fileInfo = new FileInfo(filename); if (fileInfo.Exists) { Response.Clear(); Response.AddHeader("Content-Disposition", "attachment; filename=" + fileInfo.Name); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.Flush(); Response.TransmitFile(fileInfo.FullName); Response.End(); } 

Actualizar:

El código inicial

 Response.AddHeader("Content-Disposition", "inline;attachment; filename=" + fileInfo.Name); 

tiene “inline; attachment”, es decir, dos valores para Content Disposition.

No sé exactamente cuándo comenzó, pero en Firefox solo no aparece el nombre del archivo correcto. El cuadro de descarga de archivos aparece con el nombre de la página web y su extensión ( pagename.aspx ). Después de la descarga, si cambia el nombre al nombre real; el archivo se abre con éxito

Según esta página , opera en base al orden de llegada . Cambiar el valor al attachment solo resolvió el problema.

PD: No estoy seguro de si esta es la mejor práctica pero el problema está resuelto.