项目

创建空 ASP.NET Core MVC / Razor Pages 应用程序入门指南

本教程将讲解如何以最少的依赖项从零开始使用ABP框架。通常建议从**启动模板**开始。

创建新项目

  • 使用 Visual Studio 2022 (17.0.0+) 创建新的 AspNet Core Web 应用程序:

  • 配置新项目:

  • 点击创建按钮:

create-aspnet-core-application

安装 Volo.Abp.AspNetCore.Mvc 包

您可以使用 ABP CLI 将 Volo.Abp.AspNetCore.Mvc 包安装到项目中。在需要安装包的.csproj文件所在目录执行以下命令:

abp add-package Volo.Abp.AspNetCore.Mvc

如果尚未安装,需要先安装 ABP CLI。关于其他安装方式,请参阅 包详情页面

创建第一个 ABP 模块

ABP是一个模块化框架,需要一个继承自AbpModule启动(根)模块类:

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Modularity;

namespace BasicAspNetCoreApplication
{
    [DependsOn(typeof(AbpAspNetCoreMvcModule))]
    public class AppModule : AbpModule
    {
        public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {
            var app = context.GetApplicationBuilder();
            var env = context.GetEnvironment();

            // 配置HTTP请求管道
            if (env.IsDevelopment())
            {
                app.UseExceptionHandler("/Error");
                // 默认HSTS值为30天,生产环境可能需要调整,详见 https://aka.ms/aspnetcore-hsts
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseStaticFiles();
            app.UseRouting();
            app.UseConfiguredEndpoints();
        }
    }
}

AppModule是应用程序启动模块的理想命名。

ABP包会定义模块类,模块之间可以相互依赖。上述代码中,AppModule依赖于AbpAspNetCoreMvcModule(由Volo.Abp.AspNetCore.Mvc包定义)。安装新的ABP NuGet包后通常需要添加DependsOn特性。

我们在这个模块类中配置ASP.NET Core管道,而不是在Startup类中配置。

Program 类

下一步是修改Program类以集成到ABP模块系统:

using BasicAspNetCoreApplication;

var builder = WebApplication.CreateBuilder(args);

await builder.AddApplicationAsync<AppModule>();

var app = builder.Build();

await app.InitializeApplicationAsync();
await app.RunAsync();

builder.AddApplicationAsync<AppModule>();会添加从AppModule开始的所有模块中定义的服务。

app.InitializeApplicationAsync()用于初始化和启动应用程序。

运行应用程序

至此全部完成!运行应用程序,它将按预期正常工作。

使用 Autofac 作为依赖注入框架

虽然ASP.NET Core的依赖注入(DI)系统能满足基本需求,但Autofac提供了属性注入和方法拦截等高级功能,这些是ABP执行高级应用框架功能所必需的。

将ASP.NET Core的DI系统替换为Autofac并集成到ABP非常简单。

  1. 安装 Volo.Abp.Autofac
dotnet add package Volo.Abp.Autofac
  1. 添加 AbpAutofacModule 依赖
[DependsOn(typeof(AbpAspNetCoreMvcModule))]
[DependsOn(typeof(AbpAutofacModule))] //添加对ABP Autofac模块的依赖
public class AppModule : AbpModule
{
    ...
}
  1. 更新 Program.cs 以使用 Autofac:
using BasicAspNetCoreApplication;

var builder = WebApplication.CreateBuilder(args);

builder.Host.UseAutofac();  //添加此行

await builder.AddApplicationAsync<AppModule>();

var app = builder.Build();

await app.InitializeApplicationAsync();
await app.RunAsync();

源代码

此处获取本教程中创建的示例项目源代码。

在本文档中