我正在使用Mvc-Mini-Profiler(这是一个很棒的产品!).使用我的普通网络浏览器似乎一切正常,但只要我使用自己的http客户端(没有cookie支持的基本http 1.1),http标头中X-MiniProfiler-Ids的数量就会增加.这种情况发生得非常迅速,并且在很短的时间内变得非常多(11kB及以上的数据).
缺少cookie会使Mvc-Mini-Profiler以这种方式工作,还是我的实现可能出现问题?
当我正在运行的存储过程执行mini-profiler时抛出一个空引用并导致我的应用程序停止.在这种情况下,SP不会返回任何内容.
这是堆栈跟踪:
at MvcMiniProfiler.MiniProfiler.AddSqlTiming(SqlTiming stats) in C:\Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\MiniProfiler.cs:line 274
at MvcMiniProfiler.SqlTiming..ctor(DbCommand command, ExecuteType type, MiniProfiler profiler) in C:\Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\SqlTiming.cs:line 137
at MvcMiniProfiler.SqlProfiler.ExecuteStartImpl(DbCommand command, ExecuteType type) in C:\Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\SqlProfiler.cs:line 39
at MvcMiniProfiler.SqlProfilerExtensions.ExecuteStart(SqlProfiler sqlProfiler, DbCommand command, ExecuteType type) in C:\Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\SqlProfiler.cs:line 93
at MvcMiniProfiler.MiniProfiler.MvcMiniProfiler.Data.IDbProfiler.ExecuteStart(DbCommand profiledDbCommand, ExecuteType executeType) in C:\Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\MiniProfiler.IDbProfiler.cs:line 14
at MvcMiniProfiler.Data.ProfiledDbCommand.ExecuteDbDataReader(CommandBehavior behavior) in C:\Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\Data\ProfiledDbCommand.cs:line 158
at System.Data.Common.DbCommand.ExecuteReader()
at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult)
at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression …Run Code Online (Sandbox Code Playgroud) 我正在尝试为mini-profiler编写自己的DatabaseStorageBase,而且我遇到了问题
private List<T> LoadFor<T>(DbConnection conn, object idParameter)
Run Code Online (Sandbox Code Playgroud)
方法.Dapper一直在跟我大喊大叫
Error parsing column 5 (level=0 - SByte)
Run Code Online (Sandbox Code Playgroud)
我存储的水平tinyint(4),所以我假设短小精悍不能让从微小的诠释是什么样子的枚举转换(ProfileLevel)?有人可以建议我应该如何在mysql中存储级别,以便我可以解决我的转换问题?
在MiniProfiler.MVC3 NuGet包,它会在App_Start一个文件,该文件用于控制MiniProfiler设置(SqlFormatter使用,修改到ViewEngines,何时开始MiniProfiler等).
此文件中有很多TODO注释,讨论如何更改代码以执行您想要的操作.这很好,但是当更新NuGet包时,它会看到我已经更改了文件而没有下载更新的版本.这里的问题是我丢失了对该文件的任何更新,并且取决于包中更新的内容,使其无法使用(例如,在App_Start中修改MiniProfiler.cs后将MiniProfiler.MVC3从版本1.9升级到版本2.0.1时,由于2.0.1版本中对该文件的必要更改,项目将不再构建.
处理这个问题的最佳方法是什么?我应该在App_Start中创建自己的文件而不是修改NuGet包中的文件,确保在升级到最新版本的NuGet包时我将始终获得完整更新吗?
看看ruby mini-profiler输出我注意到这个5-6个部分的模式在每个大约6-7毫秒渲染,然后一个渲染在60-70毫秒.我想知道是什么会导致这种情况,它看起来像是某种潮红.视图渲染开始时加载所有模型数据,所以我知道不是由延迟加载引起的.
Rendering: application/_row 7.1 +1107.0
Rendering: application/_row 68.7 +1115.0
Rendering: application/_row 6.7 +1184.0
...
Rendering: application/_row 6.5 +1234.0
Rendering: application/_row 65.2 +1241.0
Rendering: application/_row 6.6 +1306.0
...
Rendering: application/_row 6.6 +1321.0
Rendering: application/_row 66.6 +1328.0
Rendering: application/_row 6.6 +1395.0
...
Rendering: application/_row 6.6 +1444.0
Rendering: application/_row 65.4 +1451.0
Run Code Online (Sandbox Code Playgroud)
Ruby 1.9.3p194,Rails 3.2.11
Miniprofiler告诉我,我的页面中最慢的部分是"渲染"步骤(下面附带截图).
渲染步骤中发生了什么?是将.aspx转换为html发送给客户端的阶段吗?有什么地方我可以添加Miniprofiler.Current.Step(),看看它为什么慢?
该应用程序是.NET4.5上的MVC4,带有.aspx渲染引擎.

编辑:
控制器动作只是标准的MVC内容:
public ActionResult Index()
{
ViewData["foo"] = GetFoo();
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
ASPX视图是基本的东西,如:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"
Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<p><% ViewData["foo"] %></p>
<% Html.RenderPartial("Something", Model) %>
</asp:Content>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 web api 站点上设置 MiniProfiler,并且很难MiniProfiler.Current开始工作。
我按照 miniprofiler.com 上的指示,在 global.asax 中有以下内容:
protected void Application_Start()
{
MiniProfilerEF6.Initialize();
// other setup
}
protected void Application_BeginRequest() {
// need to start one here in order to render out the UI
MiniProfiler.Start();
}
protected void Application_EndRequest() {
MiniProfiler.Stop();
}
Run Code Online (Sandbox Code Playgroud)
这使用默认的WebRequestProfilerProvider,它将实际的配置文件对象存储在HttpContext.Current.Items.
当我要求时MiniProfiler.Current,它看起来像HttpContext.Current。
当我请求我的 Web api URL 之一时:
Application_BeginRequest 创建分析器,将其存储在 HttpContext.CurrentMessageHandler,我可以看到HttpContext.CurrentIActionFilter,HttpContext.Current现在为空,我的尝试MiniProfiler.Current.Step("controller:action")失败了 …页面加载后,我在从 MiniProfiler 获取 POST 结果时遇到了一些问题。
我试过 GET,它的工作原理。但是 POST 返回 404 错误,就好像它在寻找静态文件一样。

任何有关我下一步可以尝试的帮助或提示将不胜感激。
这是我到目前为止所看到的:
这不是我的路线
GET/POST 问题会让我怀疑我的路线有问题 - 除了......
此问题仅发生在实时服务器上。在本地,路由运行良好。
可能是:runAllManagedModulesForAllRequest?
我读过的大部分内容都建议将其设置为 true。然而,我的问题似乎与此相矛盾。
runAllManagedModulesForAllRequest="true"设置为 true时出现问题,设置为 false 时修复。我想将它设置为 true ,因为我的知识不够丰富,无法从默认设置中更改它。
添加处理程序没有帮助
其他资源,比如这个(在 MP 主页的底部),建议将此行添加到 web.config 中的 system.webServer.handlers。
据我了解,即使 runAllManagedModulesForAllRequests 设置为 false,这也应该允许 MP 运行。对我来说,这两种方式都没有影响。
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />
Run Code Online (Sandbox Code Playgroud)
但是 Web.Config 中的处理程序部分是否相关?
我没有特别的理由认为这是...
我只是不完全理解它在做什么,想知道这是否可以解释本地版本和部署版本之间的差异。
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." …Run Code Online (Sandbox Code Playgroud) web-config asp.net-mvc-routing http-status-code-404 mvc-mini-profiler
我已经实现了一个控制台应用程序并将Miniprofiler添加到此应用程序中.
现在我想将Miniprofiler数据存储到数据库中.我已经执行了脚本来创建表到数据库.你可以在这里找到脚本!
我已经回复了这个问题
但是如何将探查器值存储到相关表中?
在MVC下面,line用于存储值:
MiniProfiler.Settings.Storage = new SqlServerStorage("<your connection string>");
Run Code Online (Sandbox Code Playgroud)
如何从控制台应用程序中存储这些值?
我从其他客户端访问了ASP.NET Web API控制器,但无法在Mini Profiler URL:/ mini-profiler-resources / results中查看此调用的统计信息。这不可能吗?
c# ×3
asp.net-mvc ×2
asp.net ×1
dapper ×1
httpcontext ×1
mysql ×1
nuget ×1
profiling ×1
ruby ×1
web-config ×1