Вот код, который я использую для этого с DotNetZip - работает очень хорошо. Очевидно, вам нужно будет предоставить переменные для outputFileName, folderName и includeSubFolders.
response.ContentType = "application/zip";
response.AddHeader("content-disposition", "attachment; filename=" + outputFileName);
using (ZipFile zipfile = new ZipFile()) {
zipfile.AddSelectedFiles("*.*", folderName, includeSubFolders);
zipfile.Save(response.OutputStream);
}