15

MvcMiniProfiler のバージョン 1.6 を (Nuget 経由で) 参照し、http://code.google.com/p/mvc-mini-profiler/ のプロジェクト ホームページで説明されているようにすべてを設定しまし

Web.config に次のコードがあります。

<system.data>
    <DbProviderFactories>
        <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
        <add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.6.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
    </DbProviderFactories>
</system.data>

(プロジェクトのホームページには Version=1.5.0.0 があります - NuGet パッケージはその後更新されています)

Global.asax に次のコードがあります (および接続文字列も Web.config で定義されています)。

    protected void Application_Start()
    {
        Log.Info("ReCoupon has started.");

        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCouponContext"].ConnectionString);
        var profiled = new MvcMiniProfiler.Data.ProfiledDbConnectionFactory(factory);
        Database.DefaultConnectionFactory = profiled;

        Database.SetInitializer(new ReCouponContextInitializer());
    }

プロファイラーは、SQL のプロファイルを取得できないことを除けば、うまく機能します。SQL Server 2008 Express を使用しています。Google Code プロジェクトのホームページで関連する問題をフォローしてきましたが、完全に行き詰まっています。

4

1 に答える 1

7

これは私も長い間困惑していました。接続文字列の命名規則が Database.DefaultConnectionFactory よりも優先されるようです。

web.config の接続文字列の名前を変更してみてください。

から

   <connectionStrings>
       <add name="ReCouponContext" connectionString="..." />
   </connectionStrings>

   <connectionStrings>
       <add name="ReCoupon" connectionString="..." />
   </connectionStrings>

そして変更

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCouponContext"].ConnectionString);

var factory = new SqlConnectionFactory(ConfigurationManager.ConnectionStrings["ReCoupon"].ConnectionString);
于 2011-07-23T13:22:11.800 に答える