Как получить доступ к встроенному пользовательскому интерфейсу для Mini Profiler и без выброса кассеты InvalidDataException относительно заголовка GZip?

Я пытаюсь получить доступ к встроенному пользовательскому интерфейсу для Mini Profiler, но он либо ничего не делает, либо кассета мешает генерировать исключение.

С включенной перезаписью URL-адреса кассеты я сталкиваюсь с этой ошибкой при просмотре "~/mini-profiler-resources/results-index":

[InvalidDataException: The magic number in GZip header is not correct. Make sure you are passing in a GZip stream.]
   System.IO.Compression.GZipDecoder.ReadHeader(InputBuffer input) +8662842
   System.IO.Compression.Inflater.Decode() +560
   System.IO.Compression.Inflater.Inflate(Byte[] bytes, Int32 offset, Int32 length) +118
   System.IO.Compression.DeflateStream.Read(Byte[] array, Int32 offset, Int32 count) +85
   System.IO.Compression.GZipStream.Read(Byte[] array, Int32 offset, Int32 count) +33
   System.IO.Stream.InternalCopyTo(Stream destination, Int32 bufferSize) +62
   Cassette.Aspnet.PlaceholderReplacingResponseFilter.WriteCompressedOutput(Func`3 createCompressionStream) +136
   Cassette.Aspnet.PlaceholderReplacingResponseFilter.Close() +24
   System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest wr) +12599767
   System.Web.HttpResponse.FilterOutput() +121
   System.Web.CallFilterExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +119
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165

У меня не запущены никакие другие сервисы сжатия (что может быть проблемой, если оно было на месте и перезапись URL была включена). Если я отключаю перезапись URL в Кассете, ошибки не возникает, и я вижу это в выдаваемом HTML, но ничего не отображается:

<html><head>
<title>List of profiling sessions</title>
<script id='mini-profiler' data-ids='' type='text/javascript' src='/mini-profiler-resources/includes.js?v=kpfJeIOqwihzCDVVKMPIcBwCBaKk3jhX5Le1VL+KMf4='></script>
<link href='/mini-profiler-resources/includes.css?v=kpfJeIOqwihzCDVVKMPIcBwCBaKk3jhX5Le1VL+KMf4=' rel='stylesheet' type='text/css'>
<script type='text/javascript'>MiniProfiler.list.init({path: '/mini-profiler-resources/', version: 'kpfJeIOqwihzCDVVKMPIcBwCBaKk3jhX5Le1VL+KMf4='})</script>
</head><body></body></html>

Я почти уверен, что это связано с тем, как MiniProfiler должен рендерить включения и что-то, что делает кассета, несовместимо с MiniProfiler.

Я использую SqlServerStorage, и поэтому я могу видеть тайминги, отправленные в базу данных, и я вижу всплывающий интерфейс таймингов на любой странице. Вот моя инициализация, выполненная в Application_Start():

MiniProfiler.Settings.Storage = new SqlServerStorage(ConfigurationManager.ConnectionStrings[Shared.Constants.ConnectionStrings.MiniProfiler].ConnectionString);
            MiniProfilerEF.Initialize();
            MiniProfiler.Settings.PopupStartHidden = true;
            MiniProfiler.Settings.Results_Authorize = httpRequest => true;
            MiniProfiler.Settings.Results_List_Authorize = httpRequest => true;

Я попытался добавить это в web.config в нужном месте:

<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />

Я использую следующие версии пакета:

MiniProfiler.3.0.10-beta6 MiniProfiler.EF5.3.0.10-beta1 MiniProfiler.Mvc4.3.0.10-beta1

Платформа.NET, C#, MVC4, ASP.NET, IIS7 и т. Д.

Любые идеи о том, что может быть не так с моей настройкой или что происходит с кассетой? Это может быть очевидно, так как я новичок в MiniProfiler.

Спасибо за любые идеи!

1 ответ

Немного поздно об этом, но я считаю, что проблема связана с переписыванием HTML кассеты. Добавление <cassette debug="true" rewriteHtml="false"/> в Web.config решил проблему для меня.

Другие вопросы по тегам