Después de algunas búsquedas y prueba y error, desarrollé lo siguiente. Parece ajustarse exactamente a la factura. Debe ser muy fácilmente adaptable a PHP o cualquier otro software del lado del servidor, ya que en su mayoría consiste en modificar encabezados.
protected void streamToResponse()
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=testfile.csv");
Response.AddHeader("content-type", "text/csv");
using(StreamWriter writer = new StreamWriter(Response.OutputStream))
{
writer.WriteLine("col1,col2,col3");
writer.WriteLine("1,2,3");
}
Response.End();
}
Total sidenote: ¿Estoy loco, o es la última versión de ASP.NET 2.0? .NET es de hasta 3.5 SP1, pero pensé que ASP.NET estaba en 2.0 –