交叉发布on the MiniProfiler community。
我试图将MiniProfiler放入我当前的堆栈中。我认为我主要是设置,但我错过了UI方法,并希望获得有关最佳方法的建议。
因此,RenderIncludes()
的当前方法对我来说是不可用的。
包含JS文件并将其设置为从SQL Server存储中检索信息的最佳方法是什么?我知道文件已包含in the UI repo,但我没有看到明确配置的文档。
MiniProfiler
和MiniProfiler.EF6
个包。(不确定是否有必要):
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
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());`
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();
}
<link rel="stylesheet" href="js/lib/miniprofiler/includes.css" />
<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控制器来呈现结果。如果我能弄清楚控制器的位置或复制它(正如我当前试图做的那样),我想我会做生意。
答案 0 :(得分:1)
RenderIncludes
函数会导致<script>
标记输出到页面。它在UI Repo中定义为include.partial.html,目前看起来像这样:
<script async type="text/javascript" id="mini-profiler"
src="{path}includes.js?v={version}" data-version="{version}"
data-path="{path}" data-current-id="{currentId}"
data-ids="{ids}" data-position="{position}"
data-trivial="{showTrivial}" data-children="{showChildren}"
data-max-traces="{maxTracesToShow}" data-controls="{showControls}"
data-authorized="{authorized}" data-toggle-shortcut="{toggleShortcut}"
data-start-hidden="{startHidden}" data-trivial-milliseconds="{trivialMilliseconds}">
</script>
这是运行渲染的Javascript。
RenderIncludes
函数is defined here。它执行以下操作:
<script>
因此,如果您无法调用RenderIncludes
,则没有理由不能将脚本文件放在适当的位置,检索未查看的ID,但它们以及您想要的任何其他设置值{{1标记,并输出标记。
检索Id值的关键代码行是:
<script>
其中var ids = authorized
? MiniProfiler.Settings.Storage.GetUnviewedIds(profiler.User)
: new List<Guid>();
ids.Add(profiler.Id);
是profiler
的当前实例(在当前请求中运行。
您可能还需要确保可以处理脚本将对/ mini-profiler-resources / results进行的调用(作为参数传递到探查器的MiniProfiler
)。 id
函数