У меня есть одностраничное javascript-приложение (сделано с JavascriptMvc) и бэкэнд с REST-сервисами, созданными поверх ASP.NET MVC3 (выполняется с NServiceMVC).
В службах REST установлен и запущен MiniProfiler, а заголовки X-MiniProfiler-Ids возвращаются с каждым запросом AJAX. У меня действительно есть miniprofiler работает и работает, но я не мог найти информацию об этом, и поэтому я не уверен, что я делаю это правильно.
Является ли это поддерживаемым сценарием и существует ли конкретный способ сделать это сейчас?
В настоящее время я делаю следующее:
В приложении 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, минипрофилер показывает его в углу. Использование параметра showControls:true
здесь очень полезно, так что появляется кнопка очистки, потому что в противном случае вы просто получаете постоянный список действий, так как вся страница по существу никогда не обновляется.
Является ли это "правильным" способом сделать это, или есть лучший способ?