Я использую MiniProfiler v3.2.0.157 и MiniProfiler.EF6 v3.0.11 с C # для веб-сайта ASP.NET MVC 4. Хотя я могу заставить профилировщик отображаться на большинстве страниц сайта, он не отображается на целевой странице.
Я пробовал все, что предложено здесь: MiniProfiler не отображается на asp.net MVC и здесь: Использование MiniProfiler с MVC 5 без успех.
Обновление: я также попробовал описанную здесь технику кэширования пончиков: Кэширование отверстий пончика - исключить MiniProfiler.RenderIncludes
Я заметил, что для страниц, которые действительно работают, если есть точка останова в Application_BeginRequest
прямо на MiniProfiler.Start()
, MiniProfiler.Current
имеет значение для запросов для большинства наших страниц, но в случае запроса нашей целевой страницы оно равно null. в этот момент. В целевой странице нет ничего особенного, что могло бы вызвать проблемы.
Важные части моего кода показаны ниже.
Global.asax.cs:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (Request.IsLocal)
{
MiniProfiler.Start();
}
}
protected void Application_EndRequest()
{
MiniProfiler.Stop(discardResults: false);
}
Web.config:
<system.webServer>
<handlers>
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
</handlers>
</system.webServer>
Страница макета:
@using StackExchange.Profiling;
<head>
...
</head>
<body>
...
@MiniProfiler.RenderIncludes()
</body>
Контроллер целевой страницы:
using StackExchange.Profiling;
...
public ActionResult Landing()
{
var profiler = MiniProfiler.Current;
using (profiler.Step("Content Controller Landing"))
{
var user = ...;
return View(...);
}
}