3

私はすばらしい MVC Mini Profiler を使用しており、いくつかの PageMethods のプロファイルを作成しようとしています。問題は、結果がページのリロード時にのみ表示されることです。

PageMethods 応答ヘッダーで、「X-MiniProfiler-Ids」ID の蓄積を確認できます。これは、Profiler が実行していることを意味します。ページをリロードせずにこれらの結果を確認したいと考えています。

1 つの解決策は、こちらで説明されているように、PageMethod 自体の応答ヘッダーにアクセスすることです。これはまったく機能しませんでしたvar req = PageMethods.DoWork(callback);。では、 req は undefined として終了します。

また、応答ヘッダーを返すために新しい PageMethod( HttpContext.Current.Response.Headers["X-MiniProfiler-Ids"]) を作成しようとしましたが、予想どおり、応答ヘッダーがまだ完全に構築されていないため、機能しませんでした (私は想像します)。

私がやりたいことは、ヘッダーからプロファイラー セッションの ID を取得する方法、または他の方法でページをリロードせずにミニ プロファイラーに実行させる方法を見つけることです。

4

1 に答える 1

2

OK、うまくいきました。asp.netのデフォルトのPageMethodsを完全に捨てて、代わりにjquery ajaxのみを使用しています。上記を使用すると、ScriptManager のオーバーヘッドなしで、asp.net PageMethods とほぼ同じことができます。

function PageMethod(UrlMethod, callback) {
    return $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        data: '{}',
        dataType: 'json',
        url: UrlMethod,
        success: function (result, status, xhr) {
            FetchProfilerResults(xhr.getResponseHeader("X-MiniProfiler-Ids"));
            callback(result.d);
        }
    });
}

FetchProfilerResults は、miniProfiler IDS を取得して解析しMiniProfiler.fetchResultsExposed(ids);、miniprofiler javascript からの呼び出しを行うだけで、すべてが正常に機能しています。

于 2011-08-15T20:38:55.163 に答える