예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }