2

我正在尝试访问 Mini Profiler 的内置 UI,但它要么什么都不做,要么 Cassette 妨碍了抛出异常。

启用 Cassette 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 重写,这可能是一个问题)。如果我在 Cassette 中禁用 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 需要如何渲染包含有关,而 Cassette 所做的事情与 MiniProfiler 不兼容。

我正在使用 SqlServerStorage,因此我可以看到发送到数据库的计时,并且我可以在任何给定页面上看到弹出计时 UI。这是我在 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等。

关于我的设置可能有什么问题或 Cassette 发生了什么的任何想法?这可能很明显,因为我是 MiniProfiler 的新手。

感谢您的任何见解!

4

1 回答 1

0

这有点晚了,但我相信这个问题源于盒式磁带的 html 重写。添加<cassette debug="true" rewriteHtml="false"/>Web.config解决我的问题。

于 2014-10-27T17:10:04.917 回答