Mvc Mini Profiler + ASP.NET PageMethods не обновляется - PullRequest
3 голосов
/ 03 августа 2011

Я использую замечательный MVC Mini Profiler и пытаюсь профилировать некоторые методы PageMethods. Проблема в том, что результаты отображаются только при перезагрузке страницы.

В заголовке ответа PageMethods я вижу наращивание идентификаторов 'X-MiniProfiler-Ids', что означает, что Profiler делает свое дело, теперь я хочу видеть эти результаты без перезагрузки страницы.

Одним из решений будет доступ к заголовку ответа самого PageMethod, , как описано здесь . Это не сработало вообще. В var req = PageMethods.DoWork(callback); req заканчивается как undefined.

Я также пытался создать новый PageMethod (HttpContext.Current.Response.Headers["X-MiniProfiler-Ids"]) для возврата заголовка ответа, но, как я себе представлял, он не работал поскольку заголовок ответа еще не полностью построен (я представляю).

Что я хочу сделать, так это найти способ получить идентификаторы сеансов профилировщика из заголовка или заставить Mini Profiler сделать свое дело, не перезагружая страницу каким-либо другим способом.

1 Ответ

2 голосов
/ 16 августа 2011

Хорошо, у меня все получилось, я полностью отбросил PageMethods asp.net по умолчанию и вместо этого использую только jquery ajax. С учетом вышеизложенного я могу сделать почти то же самое, что и PageMethods asp.net без дополнительных затрат ScriptManager

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 и вызывает MiniProfiler.fetchResultsExposed(ids); из включенного в javascript минипрофиля, и все работает хорошо

...