2.2 ASP.NET 5 集成
尽快升级
截至 2022 年 05 月 31 日,微软已经停止了 .NET5
的技术支持,所以请尽快升级到 .NET6
版本,详细升级可查阅 【.NET5 升级 .NET6】
推荐使用脚手架
Furion
官方提供了非常灵活方便的脚手架,可以快速的创建多层架构项目。
推荐使用 《2.6 官方脚手架》代替本章节功能。
入门条件
对 .NET Core/ASP.NET Core
有一定基础了解,还未接触的可先看 【ASP.NET Core 基础】
2.2.1 创建 Web
项目
环境要求
使用 Furion
之前先确保安装了最新的 .NET 5 SDK
并升级 Visual Studio 2019
至最新版。
2.2.1.1 创建 ASP.NET Core Web 应用程序
- 打开
Visual Studio 2019
并创建Web
项目
- 配置项目名称
- 选择
WebAPI
项目
特别注意
Furion
已经内置了 Swagger
规范化库,所以创建时无需勾选 Enable OpenAPI support
选项。否则提示版本不一致产生冲突。
2.2.2 添加 Furion
依赖包
2.2.3 Furion
基本配置
2.2.3.1 Program.cs
添加 Inject()
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace FurionStart
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.Inject() // 添加这一行
.UseStartup<Startup>();
});
}
}
2.2.3.2 在 Startup.cs
中添加两个 Inject()
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace FurionStart
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers().AddInject(); // 添加 AddInject();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
// 添加这一行,如果是 MVC和API共存项目,无需添加 string.Empty
app.UseInject(string.Empty);
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
小提醒
如果 app.UseInject()
不输入参数,则默认地址为 /api
,如果输入 string.Empty
则为 /
目录。如果输入任意字符串,则为 /任意字符串
目录。
2.2.4 启动浏览器
启动浏览器查看效果。
小知识
默认情况下,通过 Visual Studio 2019
创建的项目会自动配置了启动页,如果使用 F5
运行,可能不会自动打开首页,这时候我们只需要配置 launchSettings.json
的 launchUrl
即可: