private void GeneratePlaylist(DirectoryInfo dir, bool recursive, bool shuffle)
    {
        this.Response.Buffer = false;
        this.Response.ContentType = "application/xspf+xml";
        this.Response.Cache.SetCacheability(shuffle ? HttpCacheability.NoCache : HttpCacheability.Private);
        //if (!shuffle)
        //    this.Response.Cache.SetLastModified(dir.LastAccessTime);

        PlaylistType playlist = new PlaylistType();
        this.RenderPlaylistHeader(dir, playlist);

        List<FileInfo> mediaFiles = new List<FileInfo>();
        FindMediaFiles(mediaFiles, dir, recursive);
        this.RenderPlaylistTracks(mediaFiles, playlist, shuffle);

        this.Response.ContentEncoding = System.Text.ASCIIEncoding.UTF8;
        XmlSerializer ser = new XmlSerializer(playlist.GetType());
        ser.Serialize(this.Response.Output, playlist);
    }
    private void GeneratePlaylist(DirectoryInfo dir, bool recursive, bool shuffle)
    {
        this.Response.Buffer = false;
        this.Response.ContentType = "application/xspf+xml";

        // Allow caching of the non-shuffled playlists.
        // Shuffled ones should be cached because they change every time.
        // Note: since v. 2.0 we have stopped generating shuffled lists
        // and instead generated regular lists and tell the player to do
        // shuffling on its own.
        this.Response.Cache.SetCacheability(shuffle ? HttpCacheability.NoCache : HttpCacheability.Private);
        //if (!shuffle)
        //    this.Response.Cache.SetLastModified(dir.LastAccessTime);

        PlaylistType playlist = new PlaylistType();
        this.RenderPlaylistHeader(dir, playlist);

        List<FileInfo> mediaFiles = new List<FileInfo>();
        UtilityMethods.FindMediaFiles(mediaFiles, dir, recursive);
        this.RenderPlaylistTracks(mediaFiles, playlist, shuffle);

        this.Response.ContentEncoding = System.Text.ASCIIEncoding.UTF8;
        XmlSerializer ser = new XmlSerializer(playlist.GetType());
        ser.Serialize(this.Response.Output, playlist);
    }