【发布时间】:2016-11-10 00:11:19
【问题描述】:
交叉发布on the MiniProfiler community。
我正在尝试将 MiniProfiler 放入我当前的堆栈中。我想我大部分时间都在设置,但我缺少 UI 方法,并希望获得有关最佳方式的建议。
当前堆栈
- SQL for DB(包括 MiniProfiler 表)
- EF 6
- WebAPI 2 API 应用程序
- Angular 1.x。用于 UI 的应用程序(单独的应用程序,没有 MVC 支持)——我认为目前是 1.5.x。
所以,RenderIncludes() 的当前方法对我不可用。
包含 JS 文件并设置它们以从 SQL Server 存储中检索信息的最佳方法是什么?我知道这些文件包含在 in the UI repo 中,但我没有看到明确配置的文档。
到目前为止我尝试过的东西——Web API 应用程序
- 安装了
MiniProfiler和MiniProfiler.EF6包。
Web.Config -- 添加处理程序
(不确定是否有必要):
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
添加了一个 CORS 过滤器以向我的客户端应用公开 MiniProfiler ID:
public class AddMiniProfilerCORSHeaderFilter : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
actionExecutedContext.Response.Headers.Add("Access-Control-Expose-Headers", "X-MiniProfiler-Ids");
}
}
将该过滤器添加为启动的一部分:
config.Filters.Add(new AddMiniProfilerCORSHeaderFilter());`
在 Global.asax 中,添加到 Application_Start():
var connectionString = ConfigurationReader.GetConnectionString(Constants.ConfigSettings.CONNECTION_STRING_NAME);
MiniProfiler.Settings.Storage = new SqlServerStorage(connectionString);
MiniProfilerEF6.Initialize();
更新开始/结束请求:
protected void Application_BeginRequest()
{
if (Request.IsLocal || ConfigurationReader.GetAppSetting(Constants.ConfigSettings.USE_PROFILER, false))
{
var sessionId = Guid.NewGuid().ToString();
MiniProfiler.Start(sessionId);
}
}
protected void Application_EndRequest()
{
MiniProfiler.Stop();
}
到目前为止我尝试过的——客户端(Angular)应用程序
- 从the Github Repo 抓取了 UI 文件
- 将 UI 目录复制到我项目的输出中
参考 CSS:
<link rel="stylesheet" href="js/lib/miniprofiler/includes.css" />
调用 JavaScript
<script async type="text/javascript"
id="mini-profiler"
src="js/lib/miniprofiler/includes.js?v=1.0.0.0"
data-current-id=""
data-path="https://localhost:44378/api/profiler/"
data-children="true"
data-ids=""
data-version="1.0.0.0"
data-controls="true"
data-start-hidden="false"
data-trivial-milliseconds="5">
</script>
当前状态
当我做这些事情时,看起来它只是找不到合适的 WebAPI 控制器来呈现结果。如果我能弄清楚那个控制器在哪里或复制它(就像我目前正在尝试做的那样),我想我会做生意的。
【问题讨论】:
标签: angularjs asp.net-web-api asp.net-web-api2 mvc-mini-profiler