{"id":1055,"date":"2016-07-20T15:56:53","date_gmt":"2016-07-20T13:56:53","guid":{"rendered":"http:\/\/blogs.msdn.microsoft.com\/lavanack\/?p=1055"},"modified":"2022-05-30T13:52:01","modified_gmt":"2022-05-30T11:52:01","slug":"performances-exceptions-asp-net","status":"publish","type":"post","link":"https:\/\/laurentvanacker.com\/index.php\/2016\/07\/20\/performances-exceptions-asp-net\/","title":{"rendered":"Exceptions ASP.Net et Performances \/ ASP.Net Exceptions and Performance"},"content":{"rendered":"<div id=\"fr-FR\" align=\"justify\"><a href=\"#en-US\">Go to the English version<\/a><\/div>\n<p align=\"justify\">Lors de mes visites chez mes clients il m&rsquo;arrive souvent de v\u00e9rifier la configuration ASP.Net et de jeter un coup d&rsquo;oeil rapide aux performances de leurs applications. Je laisse l&rsquo;expertise approfondie \u00e0 mes coll\u00e8gues PFE D\u00e9veloppement. Hormis le mode <a href=\"https:\/\/blogs.msdn.microsoft.com\/lavanack\/2016\/03\/11\/aspnet-debugmode\/\" target=\"_blank\" rel=\"noopener noreferrer\">debug<\/a> activ\u00e9 sur au moins une application de production chez 50% des clients (pensez \u00e0 bien v\u00e9rifiez chez vous et \u00e0 revoir vos processus op\u00e9rationnels en cons\u00e9quence), je collecte g\u00e9n\u00e9ralement des donn\u00e9es de performances (id\u00e9alement sur 24 heures) via Performance Monitor (aka PerfMon). Je vous livre m\u00eame ci-dessous mon script pour lancer le tout depuis une ligne de commande :<\/p>\n<pre class=\"brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate\" title=\"\">\r\nREM To create a Data Collector Set with the appropriate Performance counters for an IIS server (every 15 seconds during 24 hours)\r\nlogman create counter %COMPUTERNAME%-IIS -v mmddhhmm -o %SYSTEMDRIVE%\\PerfLogs\\Admin\\%COMPUTERNAME%-IISPerformanceCounters -f bin -rf 24:00:00 -si 00:00:15 -c &quot;\\.NET CLR Data\\*&quot; &quot;\\.NET CLR Exceptions(*)\\*&quot; &quot;\\.NET CLR Interop(*)\\*&quot; &quot;\\.NET CLR Jit(*)\\*&quot; &quot;\\.NET CLR Loading(*)\\*&quot; &quot;\\.NET CLR LocksAndThreads(*)\\*&quot; &quot;\\.NET CLR Memory(*)\\*&quot; &quot;\\.NET CLR Networking(*)\\*&quot; &quot;\\.NET CLR Remoting(*)\\*&quot; &quot;\\.NET CLR Security(*)\\*&quot; &quot;\\.NET Data Provider for SqlServer(*)\\*&quot; &quot;\\Active Server Pages\\*&quot; &quot;\\APP_POOL_WAS(*)\\*&quot; &quot;\\ASP.NET Applications(*)\\*&quot; &quot;\\ASP.NET Apps v1.1.4322(*)\\*&quot; &quot;\\ASP.NET Apps v2.0.50727(*)\\*&quot; &quot;\\ASP.NET Apps v4.0.30319(*)\\*&quot; &quot;\\ASP.NET v1.1.4322\\*&quot; &quot;\\ASP.NET v2.0.50727\\*&quot; &quot;\\ASP.NET v4.0.30319\\*&quot; &quot;\\ASP.NET\\*&quot; &quot;\\Cache\\*&quot; &quot;\\Distributed Transaction Coordinator\\*&quot; &quot;\\HTTP Service Request Queues(*)\\*&quot; &quot;\\HTTP Service Url Groups(*)\\*&quot; &quot;\\HTTP Service\\*&quot; &quot;\\Internet Information Services Global\\*&quot; &quot;\\LogicalDisk(*)\\*&quot; &quot;\\Memory\\*&quot; &quot;\\Network Inspection System\\*&quot; &quot;\\Network Interface(*)\\*&quot; &quot;\\Paging File(*)\\*&quot; &quot;\\PhysicalDisk(*)\\*&quot; &quot;\\Process(*)\\*&quot; &quot;\\Processor Information(*)\\*&quot; &quot;\\Processor(*)\\*&quot; &quot;\\Server\\*&quot; &quot;\\System\\*&quot; &quot;\\TCP\\*&quot; &quot;\\TCPv4\\*&quot; &quot;\\TCPv6\\*&quot; &quot;\\W3SVC_W3WP\\*&quot; &quot;\\WAS_W3WP(*)\\*&quot; &quot;\\Web Service Cache\\*&quot; &quot;\\Web Service(*)\\*&quot; \r\nREM To start the Data Collector Set \r\nlogman start %COMPUTERNAME%-IIS\r\n<\/pre>\n<p><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http:\/\/dunnhq.com --><\/p>\n<p align=\"justify\">Je laisse ici l&#8217;emplacement par d\u00e9faut (%SYSTEMDRIVE%\\PerfLogs\\Admin\\%COMPUTERNAME%-IIS) pour le fichier g\u00e9n\u00e9r\u00e9 (*.blg) que vous pouvez bien entendu changer.<\/p>\n<p align=\"justify\">Ensuite une macro analyse avec <a href=\"https:\/\/github.com\/clinthuffman\/PAL\" target=\"_blank\" rel=\"noopener noreferrer\">PAL<\/a> (si vous ne connaissez pas <a href=\"https:\/\/github.com\/clinthuffman\/PAL\" target=\"_blank\" rel=\"noopener noreferrer\">PAL<\/a> je vous conseille <strong>tr\u00e8s vivement<\/strong> de lire cet <a href=\"https:\/\/www.arnaudlheureux.io\/tag\/performance\/\" target=\"_blank\" rel=\"noopener noreferrer\">article<\/a>) vous donnera un aper\u00e7u rapide de la performance du ou des serveurs. Mais l\u00e0 n&rsquo;est pas le but de cet article.<\/p>\n<p align=\"justify\">J&rsquo;aimerai ici me focaliser sur les exceptions .Net et leur impact sur la performance de vos applications Web\/ASP.Net. Comme expliqu\u00e9 sur <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ff647791.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/msdn.microsoft.com\/en-us\/library\/ff647791.aspx<\/a> (cf. Exceptions). <span id=\"result_box\" lang=\"fr\"><span title=\"The .NET CLR Exceptions are observed through the \u201c.NET CLR Exceptions, # of Excepts Thrown\u201d performance counter (This counter indicates the total number of exceptions generated per second in managed code).\">Les exceptions CLR .NET sont observ\u00e9es \u00e0 travers le compteur de performances \u201c<strong>.NET CLR Exceptions, # of Excepts Thrown<\/strong>\u201d <\/span><\/span><span id=\"result_box\" lang=\"fr\"><span title=\"The .NET CLR Exceptions are observed through the \u201c.NET CLR Exceptions, # of Excepts Thrown\u201d performance counter (This counter indicates the total number of exceptions generated per second in managed code).\">(Ce compteur indique le nombre total d&rsquo;exceptions g\u00e9n\u00e9r\u00e9es par seconde dans le code manag\u00e9). <\/span><span title=\"The recommendation is to stay close to 0. An application which generates exceptions can have bugs or use the exception mechanism to manage application.\">La recommandation est de rester proche de 0. Une application qui g\u00e9n\u00e8re des exceptions peu<\/span><\/span><span id=\"result_box\" lang=\"fr\"><span title=\"The recommendation is to stay close to 0. An application which generates exceptions can have bugs or use the exception mechanism to manage application.\">t avoir des bugs ou utiliser le m\u00e9canisme d&rsquo;exceptions comme partie int\u00e9grante de la logique m\u00e9tier. <\/span><span title=\"This last use is not recommended at all because exceptions are very costly and can severely degrade your application performance.\">Cette derni\u00e8re utilisation est d\u00e9conseill\u00e9e car les exceptions sont tr\u00e8s co\u00fbteuses et peuvent d\u00e9grader s\u00e9rieusement les performances de votre application. <\/span><span title=\"You should investigate your code for application logic that uses exceptions for normal processing behavior.\">Vous devez analyser votre code pour voir si celui-ci utilise des exceptions dans son algorithme. <\/span><span title=\"Response.Redirect, Server.Transfer, and Response.End all cause a ThreadAbortException in ASP.NET applications.\"><strong>Response.Redirect<\/strong>, <strong>Server.Transfer<\/strong> et <strong>Response.End<\/strong> provoquent une exception de type <strong>ThreadAbortException<\/strong> dans les applications ASP.NET. <\/span><span title=\"A well-functioning Web server should not generate errors.\">Un serveur Web qui fonctionne bien ne doit pas g\u00e9n\u00e9rer d&rsquo;erreurs. <\/span><span title=\"Investigate and fix any bugs in your application before performance testing. \">Examiner et corriger vos bugs avant de faire des tests de performance et surtout avant de passer en production. <\/span><span title=\"In addition, no more than 5 percent of Request\/sec for the ASP.NET application has to be .NET exceptions (counter \u201c.NET CLR Exceptions, # of Excepts Thrown \/ sec\u201d).\">De plus, moins de 5 % de vos requ\u00eates ASP.NET \/ sec doivent avoir des exceptions .NET (compteur de performances \u201c<strong>.NET CLR Exceptions, # of Excepts Thrown \/ sec<\/strong>\u201d). <\/span><span title=\"If you see more than 1 request in 20 throw an exception, you should pay closer attention to it\">Si vous voyez plus de 1 requ\u00eate sur 20 lancer une exception, vous devez investiguer. Et c&rsquo;est pr\u00e9cis\u00e9ment sur ce dernier point que je vous propose un <a href=\"https:\/\/github.com\/lavanack\/laurentvanacker.com\/blob\/master\/Windows%20Powershell\/IIS\/Get-NetExceptionsRate.ps1\">script<\/a> PowerShell qui analysera vos fichiers de performances (*.BLG) et vous indiquera quand le seuil de 5% d&rsquo;exceptions ASP.Net est d\u00e9pass\u00e9 (toutes applications confondues). Vous n&rsquo;\u00eates pas oblig\u00e9s d&rsquo;utiliser le jeu de compteurs que j&rsquo;ai sp\u00e9cifi\u00e9 plus haut mais il faut au moins que les compteurs suivants aient \u00e9t\u00e9 collect\u00e9s :<br \/>\n<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li>\n<div align=\"justify\"><strong>.NET CLR Exceptions(w3wp*)\\# of Exceps Thrown \/ sec<\/strong> ou <strong>.NET CLR Exceptions(*)\\# of Exceps Thrown \/ sec<\/strong><\/div>\n<\/li>\n<li>\n<div align=\"justify\"><strong>ASP.NET Applications(*_LM_W3SVC_*)\\Requests\/Sec<\/strong> ou <strong>ASP.NET Applications(*)\\Requests\/Sec<\/strong><\/div>\n<\/li>\n<\/ul>\n<p align=\"justify\">Le code source est disponible <span id=\"result_box\" lang=\"fr\"><span title=\"If you see more than 1 request in 20 throw an exception, you should pay closer attention to it\"><a href=\"https:\/\/github.com\/lavanack\/laurentvanacker.com\/blob\/master\/Windows%20Powershell\/IIS\/Get-NetExceptionsRate.ps1\">ici.<\/a><\/span><\/span><\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:e6086c13-a18c-480b-bf97-8abc640fcb8c\" class=\"wlWriterSmartContent\" style=\"margin: 0px; padding: 0px; float: none;\">\n<div><!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin. http:\/\/dunnhq.com -->Le r\u00e9sultat sera un fichier CSV comme celui-ci :<\/div>\n<\/div>\n<p align=\"justify\"><a href=\"http:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1065\" src=\"http:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate.png\" alt=\"Get-NetExceptionsRate\" width=\"1074\" height=\"169\" srcset=\"https:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate.png 1074w, https:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate-300x47.png 300w, https:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate-768x121.png 768w, https:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate-1024x161.png 1024w\" sizes=\"auto, (max-width: 1074px) 100vw, 1074px\" \/><\/a><\/p>\n<p align=\"justify\">Ensuite vous avez la possibilit\u00e9 de trier sur la colonne D (<strong>IsThreSholdExceeded<\/strong>) pour ne garder que les intervalles de temps o\u00f9 le seuil est d\u00e9pass\u00e9 (valeur <strong>True<\/strong>).<\/p>\n<p align=\"justify\"><a href=\"http:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate_Filtered.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1075\" src=\"http:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate_Filtered.png\" alt=\"Get-NetExceptionsRate_Filtered\" width=\"1069\" height=\"191\" \/><\/a><\/p>\n<div align=\"justify\">\n<hr \/>\n<\/div>\n<div id=\"en-US\" align=\"justify\"><a href=\"#fr-FR\">Aller \u00e0 la Version fran\u00e7aise<\/a><\/div>\n<p align=\"justify\">During my customer visits I often check the ASP.Net configuration and take a quick look at the performance of their applications. I let the deep expertise to my colleagues PFE Development. Apart debug mode enabled on at least one production application in 50% of customers (remember to check your applications and review your business processes accordingly), I usually collect performance data (ideally 24 hours) via Performance Monitor (aka PerfMon). Below I give you my script to start all from a command line:<\/p>\n<pre class=\"brush: plain; collapse: true; light: false; title: ; toolbar: true; notranslate\" title=\"\"> \r\nREM To create a Data Collector Set with the appropriate Performance counters for an IIS server (every 15 seconds during 24 hours) \r\nlogman create counter %COMPUTERNAME%-IIS -v mmddhhmm -o %SYSTEMDRIVE%\\PerfLogs\\Admin\\%COMPUTERNAME%-IISPerformanceCounters -f bin -rf 24:00:00 -si 00:00:15 -c &quot;\\.NET CLR Data\\*&quot; &quot;\\.NET CLR Exceptions(*)\\*&quot; &quot;\\.NET CLR Interop(*)\\*&quot; &quot;\\.NET CLR Jit(*)\\*&quot; &quot;\\.NET CLR Loading(*)\\*&quot; &quot;\\.NET CLR LocksAndThreads(*)\\*&quot; &quot;\\.NET CLR Memory(*)\\*&quot; &quot;\\.NET CLR Networking(*)\\*&quot; &quot;\\.NET CLR Remoting(*)\\*&quot; &quot;\\.NET CLR Security(*)\\*&quot; &quot;\\.NET Data Provider for SqlServer(*)\\*&quot; &quot;\\Active Server Pages\\*&quot; &quot;\\APP_POOL_WAS(*)\\*&quot; &quot;\\ASP.NET Applications(*)\\*&quot; &quot;\\ASP.NET Apps v1.1.4322(*)\\*&quot; &quot;\\ASP.NET Apps v2.0.50727(*)\\*&quot; &quot;\\ASP.NET Apps v4.0.30319(*)\\*&quot; &quot;\\ASP.NET v1.1.4322\\*&quot; &quot;\\ASP.NET v2.0.50727\\*&quot; &quot;\\ASP.NET v4.0.30319\\*&quot; &quot;\\ASP.NET\\*&quot; &quot;\\Cache\\*&quot; &quot;\\Distributed Transaction Coordinator\\*&quot; &quot;\\HTTP Service Request Queues(*)\\*&quot; &quot;\\HTTP Service Url Groups(*)\\*&quot; &quot;\\HTTP Service\\*&quot; &quot;\\Internet Information Services Global\\*&quot; &quot;\\LogicalDisk(*)\\*&quot; &quot;\\Memory\\*&quot; &quot;\\Network Inspection System\\*&quot; &quot;\\Network Interface(*)\\*&quot; &quot;\\Paging File(*)\\*&quot; &quot;\\PhysicalDisk(*)\\*&quot; &quot;\\Process(*)\\*&quot; &quot;\\Processor Information(*)\\*&quot; &quot;\\Processor(*)\\*&quot; &quot;\\Server\\*&quot; &quot;\\System\\*&quot; &quot;\\TCP\\*&quot; &quot;\\TCPv4\\*&quot; &quot;\\TCPv6\\*&quot; &quot;\\W3SVC_W3WP\\*&quot; &quot;\\WAS_W3WP(*)\\*&quot; &quot;\\Web Service Cache\\*&quot; &quot;\\Web Service(*)\\*&quot; \r\nREM To start the Data Collector Set \r\nlogman start %COMPUTERNAME%-IIS \r\n<\/pre>\n<p>I keep here the default location (%SYSTEMDRIVE%\\PerfLogs\\Admin\\%COMPUTERNAME%-IIS) for the generated file (* .blg) you can of course change.<\/p>\n<div id=\"gt-res-p\" class=\"g-unit\" align=\"justify\">\n<div id=\"gt-res-data\">\n<div id=\"gt-res-wrap\">\n<div id=\"gt-res-content\">\n<div dir=\"ltr\"><span id=\"result_box\" lang=\"en\">Then a macro analysis with <a href=\"https:\/\/github.com\/clinthuffman\/PAL\" target=\"_blank\" rel=\"noopener noreferrer\">PAL<\/a>(if you do not know <a href=\"https:\/\/github.com\/clinthuffman\/PAL\" target=\"_blank\" rel=\"noopener noreferrer\">PAL <\/a>I advise you very strongly to read this <a href=\"https:\/\/blogs.technet.microsoft.com\/arnaud\/2015\/07\/22\/analyse-de-performances-de-serveurs-windows\/\" target=\"_blank\" rel=\"noopener noreferrer\">article<\/a>) give you a quick overview of the performance of the server. But that is not the purpose of this article.<\/span><\/div>\n<\/div>\n<div dir=\"ltr\">\n<p>I would like here to focus on .Net exceptions and their impact on the performance of your Web \/ ASP.Net applications. As explained on <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/ff647791.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/msdn.microsoft.com\/en-us\/library\/ff647791.aspx<\/a> (cf. Exceptions).<\/p>\n<p>The .NET CLR Exceptions are observed through the <span id=\"result_box\" lang=\"fr\"><span title=\"The .NET CLR Exceptions are observed through the \u201c.NET CLR Exceptions, # of Excepts Thrown\u201d performance counter (This counter indicates the total number of exceptions generated per second in managed code).\">\u201c<strong>.NET CLR Exceptions, # of Excepts Thrown<\/strong>\u201d<\/span><\/span> performance counter (This counter indicates the total number of exceptions generated per second in managed code). The recommendation is to stay close to 0. An application which generates exceptions can have bugs or use the exception mechanism to manage application. This last use is not recommended at all because exceptions are very costly and can severely degrade your application performance. You should investigate your code for application logic that uses exceptions for normal processing behavior. <strong>Response.Redirect<\/strong>, <span id=\"result_box\" lang=\"fr\"><span title=\"The .NET CLR Exceptions are observed through the \u201c.NET CLR Exceptions, # of Excepts Thrown\u201d performance counter (This counter indicates the total number of exceptions generated per second in managed code).\">\u201c<strong>.NET CLR Exceptions, # of Excepts Thrown<\/strong>\u201d<\/span><\/span> and <strong>Response.End<\/strong> all cause a ThreadAbortException in ASP.NET applications. A well-functioning Web server should not generate errors. If errors occur in your ASP.NET Web application, they may skew any throughput results because of very different code paths for error recovery. Investigate and fix any bugs in your application before performance testing. In addition, no more than 5 percent of Request\/sec for the ASP.NET application has to be .NET exceptions (counter<strong> \u201c.NET CLR Exceptions, # of Excepts Thrown \/ sec\u201d<\/strong>). If you see more than 1 request in 20 throw an exception, you should pay closer attention to it. And it is precisely on this last point that I propose a PowerShell <span id=\"result_box\" lang=\"fr\"><span title=\"If you see more than 1 request in 20 throw an exception, you should pay closer attention to it\"><a href=\"https:\/\/github.com\/lavanack\/laurentvanacker.com\/blob\/master\/Windows%20Powershell\/IIS\/Get-NetExceptionsRate.ps1\">script<\/a><\/span><\/span> that will analyze your performance files (* .<span id=\"result_box\" lang=\"fr\"><span title=\"If you see more than 1 request in 20 throw an exception, you should pay closer attention to it\">BLG<\/span><\/span>) and tell you when the threshold of 5% of ASP.Net exceptions is exceeded (for all applications). You are not obliged to use the set of counters that I specified above, but you need at least to collect the following counters:<\/p>\n<ul>\n<li><strong>.NET CLR Exceptions(w3wp*)\\# of Exceps Thrown \/ sec<\/strong> or<strong>.NET CLR Exceptions(*)\\# of Exceps Thrown \/ sec<\/strong><\/li>\n<li><strong>ASP.NET Applications(*_LM_W3SVC_*)\\Requests\/Sec<\/strong> or <strong>ASP.NET Applications(*)\\Requests\/Sec<\/strong><\/li>\n<\/ul>\n<p>The source code is available <span id=\"result_box\" lang=\"fr\"><span title=\"If you see more than 1 request in 20 throw an exception, you should pay closer attention to it\"><a href=\"https:\/\/github.com\/lavanack\/laurentvanacker.com\/blob\/master\/Windows%20Powershell\/IIS\/Get-NetExceptionsRate.ps1\">here.<\/a><\/span><\/span><\/p>\n<div id=\"scid:9D7513F9-C04C-4721-824A-2B34F0212519:b2ee62a2-720c-4fc2-adb1-a1205c2ba35f\" class=\"wlWriterSmartContent\" style=\"margin: 0px; padding: 0px; float: none;\">\n<p>The result will be a CSV file as shown below:<\/p>\n<\/div>\n<p><a href=\"http:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1065\" src=\"http:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate.png\" alt=\"Get-NetExceptionsRate\" width=\"1074\" height=\"169\" srcset=\"https:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate.png 1074w, https:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate-300x47.png 300w, https:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate-768x121.png 768w, https:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate-1024x161.png 1024w\" sizes=\"auto, (max-width: 1074px) 100vw, 1074px\" \/><\/a><\/p>\n<p>Then you have the ability to sort the column D (<strong>IsThreSholdExceeded<\/strong>) to keep only the time intervals in which the threshold is exceeded (value<strong> True<\/strong>).<br \/>\n<a href=\"http:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate_Filtered.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1075\" src=\"http:\/\/laurentvanacker.com\/wp-content\/uploads\/2016\/07\/Get-NetExceptionsRate_Filtered.png\" alt=\"Get-NetExceptionsRate_Filtered\" width=\"1069\" height=\"191\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Laurent.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Go to the English version Lors de mes visites chez mes clients il m&rsquo;arrive souvent de v\u00e9rifier la configuration ASP.Net et de jeter un coup [&#8230;]<\/p>\n","protected":false},"author":2,"featured_media":2475,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,4,7,18,9,19],"tags":[20,25,30,53,35,39],"class_list":["post-1055","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-developpement","category-iis","category-ms-dos","category-performances","category-powershell","tag-net","tag-iis","tag-ms-dos","tag-performance","tag-performance-monitor","tag-powershell"],"_links":{"self":[{"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/posts\/1055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/comments?post=1055"}],"version-history":[{"count":29,"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/posts\/1055\/revisions"}],"predecessor-version":[{"id":2891,"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/posts\/1055\/revisions\/2891"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/media\/2475"}],"wp:attachment":[{"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/media?parent=1055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/categories?post=1055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/laurentvanacker.com\/index.php\/wp-json\/wp\/v2\/tags?post=1055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}