У меня есть одностраничное javascript-приложение (выполненное с помощью JavascriptMvc) и бэкэнд со службами REST, построенными поверх ASP.NET MVC3 (выполненное с помощью NServiceMVC).
В службах REST установлен и запущен MiniProfiler, а заголовки X-MiniProfiler-Ids возвращаются с каждым запросом AJAX. На самом деле у меня запущен и работает минипрофилер, но я не смог найти никакой информации об этом, поэтому я не уверен, что делаю это правильно.
Является ли это поддерживаемым сценарием, и есть ли конкретный способ сделать это сейчас?
Что я сейчас делаю, так это:
В приложении HTML (которое представляет собой статический код, без динамического материала) у меня есть:
<script type="text/javascript" src="/api/profiler"></script>
В моем приложении MVC у меня есть:
public ActionResult Profiler()
{
if (!ControllerContext.HttpContext.IsDebuggingEnabled)
{
return new EmptyResult();
}
return new ContentResult() {
Content = StackExchange.Profiling.MiniProfiler.RenderIncludes(
position: RenderPosition.Right,
showControls: true
)
.ToString()
.Replace("<script type=\"text/javascript\">", "")
.Replace("</script>", "")
};
}
Очевидно, что здесь есть хак, чтобы убрать жестко закодированные теги <script>
.
Помимо этого, с остальной стороны MVC, профилировщик используется точно так же, как обычно. Когда вы выполняете действие в приложении, которое вызывает вызов REST, miniprofiler показывает это в углу. Здесь также очень полезно использовать параметр showControls:true
, так как появляется кнопка очистки, потому что в противном случае вы просто получите постоянный список действий, поскольку вся страница практически никогда не обновляется.
Это "правильный" способ сделать это, или есть лучший способ?
.replace()
взлом и делать это действительно официальным способом. - person gregmac   schedule 23.03.2012