2013-04-05 152 views
4

所以,在我Index.cshtml页,当我最初加载页面我有:ServiceStack MiniProfiler Ajax请求记录

@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> 

enter image description here

都好,我可以看到它剖析指数,一堆ExtJS以及服务器端的第一个ajax调用(在/ api/session中)我的ServiceStack。

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

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

回答

5

通过Nuget提供的当前版本不支持拦截ExtJS ajax调用。 似乎该功能有一个pull request,但它尚未提供。

这是我不得不做的就是围绕着:

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); 
      } 
     } 
    }); 
}); 
+0

非常感谢。我会试试看,并让你知道它是如何为我工作的。 – Tom 2013-04-06 00:36:51

6

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

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); 
      } 
     }; 

    }]); 
}]); 
+0

谢谢。很有用。 – cdm9002 2014-09-19 00:13:45

+0

非常感谢!使用MiniProfiler 3.0.11,您应该将'fetchResultsExposed'更改为'fetchResults'。 – 2015-07-28 12:52:02