4

所以,在我的Index.cshtml页面中,当我最初加载页面时,我有:

@inherits ViewPage
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="ext-all-debug.js"></script>
        <script type="text/javascript" src="app.js"></script>
        <script type="text/javascript" src="app.ext.js"></script>
        <script type="text/javascript" src="dump.js"></script>
        @ServiceStack.MiniProfiler.Profiler.RenderIncludes().AsRaw() 
    </head>
    <body> 
    </body>
</html>

在此处输入图像描述

一切都好,我可以看到它分析索引、一堆 ExtJS,以及在服务器端(在 /api/session 中)对我的 ServiceStack 的第一个 ajax 调用。

现在,在我的 ExtJS 表单中,当我单击它时,我有一个 Customers 选项卡,它发送 ajax 请求到/api/customers,当我单击它时,我有一个选项卡调用/api/orders

但是,当我开始单击“客户”选项卡时,Miniprofiler 不再将任何后续 ajax 请求添加到列表中?我认为 Miniprofiler 可以记录 ajax 请求没有什么特别需要做的吗?为什么它不为我记录后续的 ajax 请求?我错过了什么?

4

2 回答 2

6

我知道这有点老了,但是如果有人有兴趣使用带有 angularjs 的 miniprofiler 的实现如下:

app.config(['$httpProvider', function ($httpProvider) {

    $httpProvider.interceptors.push(["$q", function ($q) {

        return {
            'response': function (response) {

                if (typeof (MiniProfiler) != 'undefined' && response.config.url.indexOf(".html") < 0) {
                    var stringIds = response.headers('X-MiniProfiler-Ids');
                    if (stringIds) {
                        MiniProfiler.fetchResultsExposed(angular.fromJson(stringIds));
                    }
                }

                return response || $q.when(response);
            }
        };

    }]);
}]);
于 2014-07-24T15:06:42.900 回答
5

通过 Nuget 提供的当前版本不支持拦截 ExtJS ajax 调用。似乎有对该功能的拉取请求,但它尚不可用。

为了解决这个问题,我必须做以下事情:

Ext.require('Ext.Ajax');
Ext.onReady(function () {
    Ext.Ajax.on('requestcomplete', function (e, xhr, settings) {
        if (typeof (MiniProfiler) != 'undefined') {
            var stringIds = xhr.getResponseHeader('X-MiniProfiler-Ids');
            if (stringIds) {
                var ids = typeof JSON != 'undefined' ? JSON.parse(stringIds) : eval(stringIds);
                MiniProfiler.fetchResultsExposed(ids);
            }
        }
    });
});
于 2013-04-05T04:37:52.793 回答