ASP.NET MVC4 プロジェクトで実行されている RavenDb のミニ プロファイラーを取得しようとしています。
Unity ブートストラップには次のものがあります。
[assembly: WebActivator.PreApplicationStartMethod(typeof(Web.App.App_Start.AppStart_Unity), "Start")]
public static class AppStart_Unity
{
public static void RegisterServices(IUnityContainer container)
{
container.RegisterInstance(DocumentStoreFactory.Create(ConfigurationManager.ConnectionStrings[0].Name));
container.RegisterType<IDocumentSession>(new HierarchicalLifetimeManager(), new InjectionFactory(c => c.Resolve<IDocumentStore>().OpenSession(ConfigurationManager.ConnectionStrings[0].Name)));
}
public static void Start()
{
// Create the unity container
IUnityContainer container = new UnityContainer();
// Register services with our Unity container
RegisterServices(container);
// Tell ASP.NET MVC to use our Unity DI container
DependencyResolver.SetResolver(new UnityServiceLocator(container));
// hook up the profiler
var store = container.Resolve<IDocumentStore>();
var documentStore = store as DocumentStore;
if (documentStore != null)
{
Raven.Client.MvcIntegration.RavenProfiler.InitializeFor(documentStore);
}
}
}
私のマスター _Layout には、次のものがあります。
<head>
@Raven.Client.MvcIntegration.RavenProfiler.CurrentRequestSessions()
</head>
Web アプリケーションを初めて起動すると、プロファイラーが表示されますが、問題ありません。
ただし、後続のページ リクエストとプロファイラーは表示されません。
ページ ソースを見ると、そこに div コンテナーがあることがわかりますが、データが取り込まれていません。JavaScript エラーはまったくありません。非常に奇妙な。レンダリングされた HTML は次のようになります。
<div class="ravendb-profiler-results">
<div id="ravendb-session-container"></div>
<p></p>
<a href="#" class="ravendb-toggle ravendb-close">Close</a>
</div>
リクエストを比較すると、最初のロードで次のリクエストが表示されます。
http://localhost:62238/ravendb/profiling?path=yepnope.js
http://localhost:62238/ravendb/profiling?path=jquery.tmpl.min.js
http://localhost:62238/ravendb/profiling?path=ravendb-profiler-scripts.js
http://localhost:62238/ravendb/profiling?path=jquery.tmpl.min.js
http://localhost:62238/ravendb/profiling?path=ravendb-profiler-scripts.js
http://localhost:62238/ravendb/profiling?path=Templates%2Ftotals.tmpl.html
http://localhost:62238/ravendb/profiling?path=Templates%2Fravendb-profiler.tmpl.html
http://localhost:62238/ravendb/profiling?path=Templates%2Fsession-template.tmpl.html
http://localhost:62238/ravendb/profiling?path=Templates%2Frequest-details.tmpl.html
http://localhost:62238/ravendb/profiling?id%5B%5D=d3ada4e4-4bc3-4a7c-bd36-64cc8017d94a
http://localhost:62238/ravendb/profiling?path=styles.css
その後のロードでは、次のリクエストが表示されます。
http://localhost:62238/ravendb/profiling?path=yepnope.js
http://localhost:62238/ravendb/profiling?path=jquery.tmpl.min.js
http://localhost:62238/ravendb/profiling?path=ravendb-profiler-scripts.js
http://localhost:62238/ravendb/profiling?path=jquery.tmpl.min.js
http://localhost:62238/ravendb/profiling?path=ravendb-profiler-scripts.js
奇妙なことに、との両方のケースで呼び出しが重複しています。jquery.tmpl.min.js
ravendb-profiler-scripts.js
ravendb-profiler-scripts.js には次の行が含まれています。
9. var load = function () {
10. if (options.id.length == 0)
11. return;
後続のロードでは、options.id.length はゼロです。テンプレートは読み込まれず、結果は取得されません。
最初のページの読み込みには、次のスクリプトが含まれています。
<script type="text/javascript">
yepnope([{ test: window.jQuery, nope: '/ravendb/profiling?path=jquery-1.6.1.min.js' }, { test: window.jQuery && window.jQuery.fn.tmpl, nope: '/ravendb/profiling?path=jquery.tmpl.min.js' }, {load: '/ravendb/profiling?path=ravendb-profiler-scripts.js', complete: function() { jQuery(function() { RavenDBProfiler.initalize({ id:['df05238a-24a6-4a16-ad63-3b9537e9b544'], url: '/ravendb/profiling' }); }) } }]);
</script>
後続のロードには次が含まれます。
<script type="text/javascript">
yepnope([{ test: window.jQuery, nope: '/ravendb/profiling?path=jquery-1.6.1.min.js' }, { test: window.jQuery && window.jQuery.fn.tmpl, nope: '/ravendb/profiling?path=jquery.tmpl.min.js' }, {load: '/ravendb/profiling?path=ravendb-profiler-scripts.js', complete: function() { jQuery(function() { RavenDBProfiler.initalize({ id:[], url: '/ravendb/profiling' }); }) } }]);
</script>
idオブジェクトがないことに注意してください。
ミニプロファイラーも試しました。また、最新の不安定な RavenDb クライアントから現在の安定版リリースへのロールバックも試みました。何も違いがないように見えます。
これは予想される動作ですか?他に何かする必要がありますか?ここで私はばかですか?
アップデート
Glimpse.Ravendb プラグインをインストールしたところ、次のように報告されます。
プロファイリングは現在、EmbeddableDocumentStore ではサポートされていません。
ただし、明らかに使用していませんEmbeddableDocumentStore
:
public static class DocumentStoreFactory
{
public static IDocumentStore Create(string connectionStringName)
{
var documentStore = new DocumentStore { ConnectionStringName = connectionStringName };
documentStore.Initialize();
documentStore.DatabaseCommands.EnsureDatabaseExists(connectionStringName);
var catalog = new CompositionContainer(new AssemblyCatalog(typeof(Users_ByKarmaAndLocation).Assembly));
IndexCreation.CreateIndexes(catalog, documentStore.DatabaseCommands.ForDatabase(connectionStringName), documentStore.Conventions);
return documentStore;
}
}
これがニシンかどうかはわかりません。私はそれを言及するだろうと思った。