ASP.NET Core 6最小API中使用日志和DI示例详解
在ASP.NET Core 6中,最小API是一种轻量级的方式来构建Web API。在本攻略中,我们将介绍如何在ASP.NET Core 6最小API中使用日志和DI。以下是ASP.NET Core 6最小API中使用日志和DI示例详解的完整攻略:
步骤一:创建最小API
首先,需要创建一个最小API。可以使用以下命令在.Net Core应用程序中创建最小API:
dotnet new web -n MyApi --no-https
步骤二:添加日志记录
接下来,需要添加日志记录。可以使用以下代码在“Program.cs”文件中添加日志记录:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MyApi
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
在上面的代码中,我们使用 logging.AddConsole() 方法将日志记录到控制台中。
步骤三:添加DI
接下来,需要添加DI。可以使用以下代码在“Startup.cs”文件中添加DI:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MyApi
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging();
services.AddSingleton<IMyService, MyService>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
var myService = context.RequestServices.GetService<IMyService>();
logger.LogInformation("Hello from the root endpoint");
await context.Response.WriteAsync(myService.GetMessage());
});
});
}
}
public interface IMyService
{
string GetMessage();
}
public class MyService : IMyService
{
public string GetMessage()
{
return "Hello from MyService";
}
}
}
在上面的代码中,我们使用 services.AddSingleton 方法将 MyService 注册为单例服务,并使用 services.AddLogging 方法添加日志记录。
示例一:记录日志
以下是一个示例,演示如何在ASP.NET Core 6最小API中记录日志:
- 在“MyApi”项目中,打开“Program.cs”文件,并将以下代码添加到该文件中:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MyApi
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddConsole();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
在上面的代码中,我们使用 logging.AddConsole() 方法将日志记录到控制台中。
- 在“MyApi”项目中,打开“Startup.cs”文件,并将以下代码添加到该文件中:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MyApi
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddLogging();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
logger.LogInformation("Hello from the root endpoint");
await context.Response.WriteAsync("Hello World!");
});
});
}
}
}
在上面的代码中,我们在根端点中使用 logger.LogInformation 方法记录日志。
- 在终端中,使用以下命令启动应用程序:
dotnet run
- 在浏览器中,导航到“http://localhost:5000/”。
- 在控制台中查看日志记录。
在上面的示例中,我们在根端点中使用 logger.LogInformation 方法记录日志,并将日志记录到控制台中。
示例二:使用DI
以下是一个示例,演示如何在ASP.NET Core 6最小API中使用DI:
- 在“MyApi”项目中,打开“Startup.cs”文件,并将以下代码添加到该文件中:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MyApi
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IMyService, MyService>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/", async context =>
{
var myService = context.RequestServices.GetService<IMyService>();
await context.Response.WriteAsync(myService.GetMessage());
});
});
}
}
public interface IMyService
{
string GetMessage();
}
public class MyService : IMyService
{
public string GetMessage()
{
return "Hello from MyService";
}
}
}
在上面的代码中,我们使用 services.AddSingleton 方法将 MyService 注册为单例服务,并在根端点中使用 context.RequestServices.GetService
- 在终端中,使用以下命令启动应用程序:
dotnet run
- 在浏览器中,导航到“http://localhost:5000/”。
- 在浏览器中查看 MyService 的消息。
在上面的示例中,我们在根端点中使用 context.RequestServices.GetService
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Core 6最小API中使用日志和DI示例详解 - Python技术站