ASP.NET MVC5 Web サイトの C# で MiniProfiler.Mvc5 v4.2.1 を使用しています。ソース コード リポジトリに含まれている Samples.Mvc5 プロジェクトに基づいて MiniProfiler を実装していますが、SQL タイミングの表示に問題があります。セットアップで何かがおかしいのではないかと興味がありますが、それが何であるかは正確にはわかりません。
これはホームページをロードする例です。SQL のタイミングとパーセンテージがすべて 0.0 と表示される理由がわかりません。
ただし、実際に SQL タイミングをクリックすると、次のビューが表示されます。これは、各 SQL 呼び出しにタイミングが関連付けられていることを示しているようです。
ProfileDbConnection およびその他の関連オブジェクトを定義するために使用している DataConnection クラスは、別の CSPROJ にあります。関連する構成メソッドを次に示します。
/// <summary>
/// Creates a new native connection
/// </summary>
protected override IDbConnection CreateNativeConnection()
{
var connection = new SqlConnection(ConnectionString);
return new ProfiledDbConnection(connection, MiniProfiler.Current);
}
/// <summary>
/// Creates a new SQL command
/// </summary>
/// <param name="cmdText">Command text</param>
protected override DbCommand CreateCommand(string cmdText)
{
var command = new SqlCommand(cmdText, null, (SqlTransaction)Transaction);
return new ProfiledDbCommand(command, (DbConnection)NativeConnection, MiniProfiler.Current);
}
/// <summary>
/// Creates a new command parameter
/// </summary>
/// <param name="name">Parameter name</param>
/// <param name="value">Parameter value</param>
protected override DbParameter CreateParameter(string name, object value)
{
return new SqlParameter(name, value);
}
/// <summary>
/// Creates a data adapter
/// </summary>
protected override DbDataAdapter CreateDataAdapter()
{
return new ProfiledDbDataAdapter(new SqlDataAdapter(), MiniProfiler.Current);
}
MVC アプリの Global.asax.cs:
public MvcApplication()
{
AuthenticateRequest += (sender, e) =>
{
var app = (HttpApplication) sender;
if (Request.IsLocal || app.User != null && app.User.Identity.IsAuthenticated && app.User.Identity.Name == "administrator")
{
MiniProfiler.StartNew();
}
};
EndRequest += (sender, e) =>
{
MiniProfiler.Current?.Stop();
};
}
なぜ最初のビューでそれらが集約されていないのか、またはどこから情報を収集しようとしているのかを教えてくれる人はいますか?