public HttpResponseMessage InfoPackage() { var tempFileName = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); try { using (var file = new FileStream(tempFileName, FileMode.Create)) using (var package = new ZipArchive(file, ZipArchiveMode.Create)) { DebugInfoProvider.CreateInfoPackageForDatabase(package, Database, RequestManager); } var response = new HttpResponseMessage(); response.Content = new StreamContent(new FileStream(tempFileName, FileMode.Open, FileAccess.Read)) { Headers = { ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = string.Format("Debug-Info-{0}.zip",SystemTime.UtcNow), }, ContentType = new MediaTypeHeaderValue("application/octet-stream") } }; return(response); } finally { IOExtensions.DeleteFile(tempFileName); } }
public HttpResponseMessage InfoPackage() { var tempFileName = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); try { var jsonSerializer = new JsonSerializer { Formatting = Formatting.Indented }; jsonSerializer.Converters.Add(new EtagJsonConverter()); using (var file = new FileStream(tempFileName, FileMode.Create)) using (var package = new ZipArchive(file, ZipArchiveMode.Create)) { var adminStats = package.CreateEntry("admin_stats.txt", CompressionLevel.Optimal); using (var metricsStream = adminStats.Open()) using (var streamWriter = new StreamWriter(metricsStream)) { jsonSerializer.Serialize(streamWriter, CreateAdminStats()); streamWriter.Flush(); } DatabasesLandlord.ForAllDatabases(database => { var prefix = string.IsNullOrWhiteSpace(database.Name) ? "System" : database.Name; DebugInfoProvider.CreateInfoPackageForDatabase(package, database, RequestManager, prefix + "/"); }); var stacktraceRequsted = GetQueryStringValue("stacktrace"); if (stacktraceRequsted != null) { DumpStacktrace(package); } } var response = new HttpResponseMessage(); response.Content = new StreamContent(new FileStream(tempFileName, FileMode.Open, FileAccess.Read)) { Headers = { ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = string.Format("Admin-Debug-Info-{0}.zip",SystemTime.UtcNow), }, ContentType = new MediaTypeHeaderValue("application/octet-stream") } }; return(response); } finally { IOExtensions.DeleteFile(tempFileName); } }