原文如何在ASP.NET Core Web API中使用Mini Profiler

Anuraj发表于2019年11月25日星期一阅读时间:1分钟

ASPNETCoreMiniProfiler

这篇文章是关于如何在ASP.NET Core Web API中配置Mini Profiler。MiniProfiler是用于对应用程序进行性能分析的库和UI。MiniProfiler可帮助您评估应用程序的性能。使用Entity Framework扩展,您将能够衡量查询性能。”

首先,您需要安装MiniProfiler软件包和MiniProfiler Entity Framework软件包。(我假设您已经创建了一个ASP.NET Core Web API项目,如果没有先创建的话。)

dotnet add package MiniProfiler.AspNetCore.Mvc --version 4.1.0
dotnet add package MiniProfiler.EntityFrameworkCore --version 4.1.0

安装后,startup.cs按如下所示修改您的代码。

public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
services.AddMiniProfiler(options => options.RouteBasePath = "/profiler").AddEntityFramework();
services.AddControllers();
}

在上面的代码中,我们添加了用于Web API和实体框架的Profiler。配置完RouteBasePath属性后,我们就可以访问/profiler/results-index,处的当前请求/profiler/results以及/profiler/results-listJSON 处的所有请求列表中的所有请求的列表。

services.AddMemoryCache();代码是必需的-MiniProfiler中存在一个错误,如果我们尚未配置MemoryCache,它将失败。

接下来,我们需要添加MiniProfiler中间件,您可以这样做。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseMiniProfiler();
/* Code removed for brevity. */
}

现在,您已经完成了ASP.NET Core Web API中Mini Profiler的配置。现在运行该应用程序,您将能够看到这样的结果。

如果要对自己的代码进行性能分析,则可以使用该MiniProfiler.Current对象,如下所示。

public IActionResult Put([FromRoute]int id, [FromBody]WeatherForecast weatherForecast)
{
using (MiniProfiler.Current.Step("PUT method"))
{
WeatherForecast weatherForecastById = null;
using (MiniProfiler.Current.Step("Getting Weather Forecase for the Id"))
{
weatherForecastById = GetWeatherForecast(id);
} if (weatherForecastById == null)
{
return NotFound();
} if (weatherForecastById.Id != id)
{
return BadRequest();
}
using (MiniProfiler.Current.Step("Updating the Data"))
{
_databaseContext.Entry(weatherForecast).State = EntityState.Modified;
_databaseContext.SaveChanges();
}
return NoContent();
}
}

这将帮助您识别代码中的问题并进行故障排除。这是有关此方法的配置文件信息的屏幕截图。

MiniProfiler可帮助您分析ASP.NET Core Web应用程序代码以及实体框架代码。它支持不同的数据库提供程序和扩展。MiniProfiler还带有许多扩展方法,这些方法无需编写自己的代码即可帮助分析代码。

快乐编程:)

你怎么看?我想在下面的评论部分中听到您的想法,建议和问题。


类似帖子

------------------------------------------------------原文为英文版-----------------------------------------------------------------

Posted by Anuraj on Monday, November 25, 2019 Reading time :1 minute

ASPNETCore MiniProfiler

This post is about how to configure Mini Profiler in ASP.NET Core Web API. MiniProfiler is a library and UI for profiling your application. MiniProfiler helps you to measure perfomance of your applications. With Entity Framework extension you will be able to measure query performance.”

First you need to install the MiniProfiler package and MiniProfiler Entity Framework package. (I assume you already created an ASP.NET Core Web API project, if not create it first.)

dotnet add package MiniProfiler.AspNetCore.Mvc --version 4.1.0
dotnet add package MiniProfiler.EntityFrameworkCore --version 4.1.0

Once installed, modify your startup.cs code like the following.

public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
services.AddMiniProfiler(options => options.RouteBasePath = "/profiler").AddEntityFramework();
services.AddControllers();
}

In the above code we are adding the Profiler for Web API and Entity Framework. Once you configure the RouteBasePath property, we are able access a list of all requests at /profiler/results-index, the current request at /profiler/results and at /profiler/results-list a list of all requests as JSON.

The services.AddMemoryCache(); code is required - there is a bug in MiniProfiler, if we have not configured MemoryCache, it will fail.

Next we need add the MiniProfiler middleware, you can do like this.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseMiniProfiler();
/* Code removed for brevity. */
}

Now you have completed the configuration of Mini Profiler in ASP.NET Core Web API. Now run the application, you will be able to see the results like this.

If you want to your own code profiling you can use the MiniProfiler.Current object, like this.

public IActionResult Put([FromRoute]int id, [FromBody]WeatherForecast weatherForecast)
{
using (MiniProfiler.Current.Step("PUT method"))
{
WeatherForecast weatherForecastById = null;
using (MiniProfiler.Current.Step("Getting Weather Forecase for the Id"))
{
weatherForecastById = GetWeatherForecast(id);
} if (weatherForecastById == null)
{
return NotFound();
} if (weatherForecastById.Id != id)
{
return BadRequest();
}
using (MiniProfiler.Current.Step("Updating the Data"))
{
_databaseContext.Entry(weatherForecast).State = EntityState.Modified;
_databaseContext.SaveChanges();
}
return NoContent();
}
}

This will help you to identify and troubleshoot problems on the code. Here is the screenshot of the profile information about this method.

MiniProfiler helps you to Profile ASP.NET Core Web Application code as well as the Entity Framework Code. It supports different Database providers and extensions. MiniProfiler also comes with lot of extension methods which helps to profile code without writing your own.

Happy Programming :)

What do you think? I would like to hear your thoughts, suggestions, and questions in the comments section below.


如何在ASP.NET Core Web API中使用Mini Profiler的更多相关文章

  1. 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持

    HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...

  2. 在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务

    在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core ...

  3. [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

    [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 本文首发自:博客园 文章地址: https://www.cnblogs.com/yilezhu/p/ ...

  4. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  5. ASP.NET Core Web API中使用Swagger

    本节导航 Swagger介绍 在ASP.NET CORE 中的使用swagger   在软件开发中,管理和测试API是一件重要而富有挑战性的工作.在我之前的文章<研发团队,请管好你的API文档& ...

  6. ASP.NET Core Web API中带有刷新令牌的JWT身份验证流程

    ASP.NET Core Web API中带有刷新令牌的JWT身份验证流程 翻译自:地址 在今年年初,我整理了有关将JWT身份验证与ASP.NET Core Web API和Angular一起使用的详 ...

  7. 如何在ASP.NET Core Web API测试中使用Postman

    使用Postman进行手动测试 如果您是开发人员,测试人员或管理人员,则在构建和使用应用程序时,有时了解各种API方法可能是一个挑战. 使用带有.NET Core的Postman为您的Web API生 ...

  8. 翻译一篇英文文章,主要是给自己看的——在ASP.NET Core Web Api中如何刷新token

    原文地址 :https://www.blinkingcaret.com/2018/05/30/refresh-tokens-in-asp-net-core-web-api/ 先申明,本人英语太菜,每次 ...

  9. ASP.NET Core Web API中实现全局异常捕获与处理

    处理全局异常 HANDLING ERRORS GLOBALLY 在上面的示例中,我们的 action 内部有一个 try-catch 代码块.这一点很重要,我们需要在我们的 action 方法体中处理 ...

随机推荐

  1. 【前端_React】npm常用命令

    安装模块(包): //全局安装 $ npm install 模块名 -g //本地安装 $ npm install 模块名 //一次性安装多个 $ npm install 模块1 模块2 模块n -- ...

  2. shell 的 正则表达式

    shell的正则表达式规则 https://www.jb51.net/tools/shell_regex.html 常规字符 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.例如,“n ...

  3. python 和 R 语言 中的 range() 函数

    1.python 中的 range() 函数生成整数序列,常用于 for 循环的迭代. 示例: 2.R 语言中的 range() 函数返回一个数值向量中的最小值和最大中,常用于求极差. 示例: 按语: ...

  4. 记录OKR在小公司实施的一次经历

    00 前言 前段时间看了本书叫<OKR工作法>,顺便了解了一下OKR的相关知识,感觉这个起源于英特尔公司的东西,正是为那种小而美的团队准备的好东东.如果你还不知道什么是OKR,那我给你个传 ...

  5. 第07节-开源蓝牙协议BTStack框架代码阅读(下)

    上篇博客中已经对BTStack框架进行了较为详细的说明,本篇博客将进一步总结一下(由韦大仙笔记所得). 可以从5个方面来理解BTStack的框架: 1.硬件操作:hci_transport_t BTS ...

  6. ActiveMQ消息可靠性-事物

    事物偏生产者,签收偏消费者 设置为true,需要手动提交    设置为false,自动提交   使用手动提交的好处就是可以回滚,当整个事物提交时,里面的某条失败了,可以事物回滚,于是保证了数据的一致性 ...

  7. 二分查找java实现

    二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列. 二分查找思路非常简单,由粗暴的遍历查找改为 ...

  8. PATA1055 The World's Richest (25 分)

    1055 The World's Richest (25 分) Forbes magazine publishes every year its list of billionaires based ...

  9. helm原理

    Helm: helm就相当于Linux的包管理工具yum,但它管理的程序包是一些打包好的清单文件. 其核心术语: Chart:一个helm程序包,它里面可理解为,包含了一下定义Pod的清单文件,这些清 ...

  10. helm repository 相关

    chart repo是一个可用来存储index.yaml与打包的chart文件的HTTP server.当要分享chart时,需要上传chart文件到chart仓库,任何一个能够提供yaml与tar文 ...