Browse Source

feat: update micro template to 9.1.1

pull/1179/head
colin 11 months ago
parent
commit
7f7f1f0a89
  1. 7
      aspnet-core/LINGYUN.MicroService.All.sln
  2. 41
      aspnet-core/framework/telemetry/LINGYUN.Abp.Telemetry.OpenTelemetry/LINGYUN/Abp/Telemetry/OpenTelemetry/AbpTelemetryOpenTelemetryModule.cs
  3. 2
      aspnet-core/framework/telemetry/LINGYUN.Abp.Telemetry.SkyWalking/LINGYUN/Abp/Telemetry/SkyWalking/AbpTelemetrySkyWalkingModule.cs
  4. 2
      aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj
  5. 22
      aspnet-core/templates/micro/content/.template.config/template.json
  6. 72
      aspnet-core/templates/micro/content/Directory.Packages.props
  7. 2
      aspnet-core/templates/micro/content/PackageName.CompanyName.ProjectName.sln
  8. 4
      aspnet-core/templates/micro/content/common.props
  9. 2
      aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Dockerfile
  10. 13
      aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj
  11. 92
      aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Program.cs
  12. 79
      aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs
  13. 21
      aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs
  14. 47
      aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json
  15. 2
      aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.json
  16. 2
      aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore.csproj
  17. 2
      aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbContextFactory.cs
  18. 1
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj
  19. 1
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj
  20. 6
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj
  21. 1
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj
  22. 1
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj
  23. 2
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDbProperties.cs
  24. 1
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj
  25. 21
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs
  26. 2
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContextModelCreatingExtensions.cs
  27. 2
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameModelBuilderConfigurationOptions.cs
  28. 1
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj
  29. 1
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj
  30. 1
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj
  31. 10
      aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingAppService.cs

7
aspnet-core/LINGYUN.MicroService.All.sln

@ -835,6 +835,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.IP2Region", "fr
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.AuditLogging.IP.Location", "framework\auditing\LINGYUN.Abp.AuditLogging.IP.Location\LINGYUN.Abp.AuditLogging.IP.Location.csproj", "{D63FEED3-2342-7E96-4121-B0C19CF1EA81}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.AuditLogging.IP.Location", "framework\auditing\LINGYUN.Abp.AuditLogging.IP.Location\LINGYUN.Abp.AuditLogging.IP.Location.csproj", "{D63FEED3-2342-7E96-4121-B0C19CF1EA81}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Saas.DbChecker", "modules\saas\LINGYUN.Abp.Saas.DbChecker\LINGYUN.Abp.Saas.DbChecker.csproj", "{DED16774-635C-D781-4D5B-D1FA56EECF10}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -2161,6 +2163,10 @@ Global
{D63FEED3-2342-7E96-4121-B0C19CF1EA81}.Debug|Any CPU.Build.0 = Debug|Any CPU {D63FEED3-2342-7E96-4121-B0C19CF1EA81}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D63FEED3-2342-7E96-4121-B0C19CF1EA81}.Release|Any CPU.ActiveCfg = Release|Any CPU {D63FEED3-2342-7E96-4121-B0C19CF1EA81}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D63FEED3-2342-7E96-4121-B0C19CF1EA81}.Release|Any CPU.Build.0 = Release|Any CPU {D63FEED3-2342-7E96-4121-B0C19CF1EA81}.Release|Any CPU.Build.0 = Release|Any CPU
{DED16774-635C-D781-4D5B-D1FA56EECF10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DED16774-635C-D781-4D5B-D1FA56EECF10}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DED16774-635C-D781-4D5B-D1FA56EECF10}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DED16774-635C-D781-4D5B-D1FA56EECF10}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@ -2566,6 +2572,7 @@ Global
{418EE258-2670-29D3-480F-EC0FD07700E8} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E} {418EE258-2670-29D3-480F-EC0FD07700E8} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E}
{7984F6B6-726F-9F30-3B6F-08A90AD75A7D} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E} {7984F6B6-726F-9F30-3B6F-08A90AD75A7D} = {8AC72641-30D3-4ACF-89FA-808FADC55C2E}
{D63FEED3-2342-7E96-4121-B0C19CF1EA81} = {6A3FF105-7E8B-4B4D-A736-1C2BAF86FDAA} {D63FEED3-2342-7E96-4121-B0C19CF1EA81} = {6A3FF105-7E8B-4B4D-A736-1C2BAF86FDAA}
{DED16774-635C-D781-4D5B-D1FA56EECF10} = {D01D859E-4B72-478A-BABD-90F0981652D5}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718} SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718}

41
aspnet-core/framework/telemetry/LINGYUN.Abp.Telemetry.OpenTelemetry/LINGYUN/Abp/Telemetry/OpenTelemetry/AbpTelemetryOpenTelemetryModule.cs

@ -14,30 +14,37 @@ public class AbpTelemetryOpenTelemetryModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
var applicationName = context.Services.GetApplicationName();
var openTelmetrySetup = context.Services.GetPreConfigureActions<OpenTelemetryBuilder>(); var openTelmetrySetup = context.Services.GetPreConfigureActions<OpenTelemetryBuilder>();
var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"]; var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"];
if (openTelemetryEnabled.IsNullOrEmpty() || bool.Parse(openTelemetryEnabled)) if (openTelemetryEnabled.IsNullOrWhiteSpace() || "false".Equals(openTelemetryEnabled.ToLower()))
{ {
var openTelmetryBuilder = context.Services.AddOpenTelemetry() return;
.ConfigureResource(resource => }
{
resource.AddService(applicationName);
})
.WithTracing(tracing =>
{
tracing.AddSource(applicationName);
ConfigureTracing(tracing, configuration);
})
.WithMetrics(metrics =>
{
ConfigureMetrics(metrics, configuration);
});
openTelmetrySetup.Configure(openTelmetryBuilder); var applicationName = configuration["OpenTelemetry:ServiceName"];
if (applicationName.IsNullOrWhiteSpace())
{
applicationName = context.Services.GetApplicationName();
} }
var openTelmetryBuilder = context.Services
.AddOpenTelemetry()
.ConfigureResource(resource =>
{
resource.AddService(applicationName);
})
.WithTracing(tracing =>
{
tracing.AddSource(applicationName);
ConfigureTracing(tracing, configuration);
})
.WithMetrics(metrics =>
{
ConfigureMetrics(metrics, configuration);
});
openTelmetrySetup.Configure(openTelmetryBuilder);
} }
private static void ConfigureTracing(TracerProviderBuilder tracing, IConfiguration configuration) private static void ConfigureTracing(TracerProviderBuilder tracing, IConfiguration configuration)

2
aspnet-core/framework/telemetry/LINGYUN.Abp.Telemetry.SkyWalking/LINGYUN/Abp/Telemetry/SkyWalking/AbpTelemetrySkyWalkingModule.cs

@ -12,7 +12,7 @@ public class AbpTelemetrySkyWalkingModule : AbpModule
public override void ConfigureServices(ServiceConfigurationContext context) public override void ConfigureServices(ServiceConfigurationContext context)
{ {
var configuration = context.Services.GetConfiguration(); var configuration = context.Services.GetConfiguration();
var isSkywalkingEnabled = configuration["SkyWalking:Enable"]; var isSkywalkingEnabled = configuration["SkyWalking:IsEnabled"];
if (isSkywalkingEnabled.IsNullOrWhiteSpace() || "false".Equals(isSkywalkingEnabled.ToLower())) if (isSkywalkingEnabled.IsNullOrWhiteSpace() || "false".Equals(isSkywalkingEnabled.ToLower()))
{ {
return; return;

2
aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj

@ -3,7 +3,7 @@
<TargetFramework>net9.0</TargetFramework> <!-- 或其他适合的框架 --> <TargetFramework>net9.0</TargetFramework> <!-- 或其他适合的框架 -->
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageId>LINGYUN.Abp.MicroService.Templates</PackageId> <PackageId>LINGYUN.Abp.MicroService.Templates</PackageId>
<Version>9.0.4</Version> <Version>9.1.1</Version>
<Authors>colin.in@foxmail.com</Authors> <Authors>colin.in@foxmail.com</Authors>
<Description>Abp framework micro-service template</Description> <Description>Abp framework micro-service template</Description>
<PackageLicenseExpression>MIT</PackageLicenseExpression> <PackageLicenseExpression>MIT</PackageLicenseExpression>

22
aspnet-core/templates/micro/content/.template.config/template.json

@ -30,20 +30,20 @@
"sourceName": "ProjectName", "sourceName": "ProjectName",
"preferNameDirectory": true, "preferNameDirectory": true,
"symbols": { "symbols": {
"AuthenticationScheme": { "Telemetry": {
"type": "parameter", "type": "parameter",
"description": "Authentication Scheme", "description": "Distributed tracking provider",
"datatype": "choice", "datatype": "choice",
"defaultValue": "IdentityServer4", "defaultValue": "OpenTelemetry",
"isRequired": false, "isRequired": false,
"choices": [ "choices": [
{ {
"choice": "IdentityServer4", "choice": "SkyWalking",
"description": "IdentityServer4" "description": "Use SkyWalking"
}, },
{ {
"choice": "OpenIddict", "choice": "OpenTelemetry",
"description": "OpenIddict" "description": "Use OpenTelemetry"
} }
] ]
}, },
@ -104,13 +104,13 @@
"type": "computed", "type": "computed",
"value": "(DatabaseManagement == \"PostgreSql\")" "value": "(DatabaseManagement == \"PostgreSql\")"
}, },
"IdentityServer4": { "SkyWalking": {
"type": "computed", "type": "computed",
"value": "(AuthenticationScheme == \"IdentityServer4\")" "value": "(Telemetry == \"SkyWalking\")"
}, },
"OpenIddict": { "OpenTelemetry": {
"type": "computed", "type": "computed",
"value": "(AuthenticationScheme == \"OpenIddict\")" "value": "(Telemetry == \"OpenTelemetry\")"
} }
} }
} }

72
aspnet-core/templates/micro/content/Directory.Packages.props

@ -2,8 +2,8 @@
<PropertyGroup> <PropertyGroup>
<DotNetCoreCAPPackageVersion>8.3.2</DotNetCoreCAPPackageVersion> <DotNetCoreCAPPackageVersion>8.3.2</DotNetCoreCAPPackageVersion>
<ElsaPackageVersion>2.14.1</ElsaPackageVersion> <ElsaPackageVersion>2.14.1</ElsaPackageVersion>
<VoloAbpPackageVersion>9.0.4</VoloAbpPackageVersion> <VoloAbpPackageVersion>9.1.1</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>9.0.4</LINGYUNAbpPackageVersion> <LINGYUNAbpPackageVersion>9.1.1</LINGYUNAbpPackageVersion>
<MicrosoftExtensionsPackageVersion>9.0.0.0</MicrosoftExtensionsPackageVersion> <MicrosoftExtensionsPackageVersion>9.0.0.0</MicrosoftExtensionsPackageVersion>
<MicrosoftAspNetCorePackageVersion>9.0.0.0</MicrosoftAspNetCorePackageVersion> <MicrosoftAspNetCorePackageVersion>9.0.0.0</MicrosoftAspNetCorePackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>9.0.0.0</MicrosoftEntityFrameworkCorePackageVersion> <MicrosoftEntityFrameworkCorePackageVersion>9.0.0.0</MicrosoftEntityFrameworkCorePackageVersion>
@ -214,6 +214,9 @@
<PackageVersion Include="LINGYUN.Abp.TaskManagement.Domain" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Abp.TaskManagement.Domain" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.TaskManagement.EntityFrameworkCore" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Abp.TaskManagement.EntityFrameworkCore" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.TaskManagement.HttpApi" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Abp.TaskManagement.HttpApi" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.Telemetry.APM" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.Telemetry.OpenTelemetry" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.Telemetry.SkyWalking" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.TextTemplating.Application.Contracts" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Abp.TextTemplating.Application.Contracts" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.TextTemplating.Application" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Abp.TextTemplating.Application" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.TextTemplating.Domain.Shared" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Abp.TextTemplating.Domain.Shared" Version="$(LINGYUNAbpPackageVersion)" />
@ -229,11 +232,13 @@
<PackageVersion Include="LINGYUN.Abp.WebhooksManagement.HttpApi" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Abp.WebhooksManagement.HttpApi" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Platform.Application.Contracts" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Platform.Application.Contracts" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Platform.Application" Version="$(LINGYUNAbpPackageVersion)" /> <PackageVersion Include="LINGYUN.Platform.Application" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.Emailing.Platform" Version="$(LINGYUNAbpPackageVersion)" />
<PackageVersion Include="LINGYUN.Abp.Sms.Platform" Version="$(LINGYUNAbpPackageVersion)" />
</ItemGroup> </ItemGroup>
<!-- Abp Framework --> <!-- Abp Framework -->
<ItemGroup> <ItemGroup>
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="3.2.0" /> <PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="4.1.1" />
<PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" /> <PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" /> <PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Account.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> <PackageVersion Include="Volo.Abp.Account.Application.Contracts" Version="$(VoloAbpPackageVersion)" />
@ -381,7 +386,8 @@
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsPackageVersion)" /> <PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsPackageVersion)" /> <PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsPackageVersion)" /> <PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsPackageVersion)" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0-preview.2.efcore.9.0.0" /> <PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0-preview.3.efcore.9.0.0" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql.Json.Microsoft" Version="9.0.0-preview.3.efcore.9.0.0" />
</ItemGroup> </ItemGroup>
<!-- Elsa --> <!-- Elsa -->
@ -417,31 +423,31 @@
<!-- Serilog --> <!-- Serilog -->
<ItemGroup> <ItemGroup>
<PackageVersion Include="Serilog" Version="3.1.1" /> <PackageVersion Include="Serilog" Version="4.0.2" />
<PackageVersion Include="Serilog.AspNetCore" Version="8.0.0" /> <PackageVersion Include="Serilog.AspNetCore" Version="8.0.2" />
<PackageVersion Include="Serilog.Enrichers.Environment" Version="2.3.0" /> <PackageVersion Include="Serilog.Enrichers.Environment" Version="2.3.0" />
<PackageVersion Include="Serilog.Enrichers.Assembly" Version="2.0.0" /> <PackageVersion Include="Serilog.Enrichers.Assembly" Version="2.0.0" />
<PackageVersion Include="Serilog.Enrichers.Process" Version="2.0.2" /> <PackageVersion Include="Serilog.Enrichers.Process" Version="2.0.2" />
<PackageVersion Include="Serilog.Enrichers.Thread" Version="3.1.0" /> <PackageVersion Include="Serilog.Enrichers.Thread" Version="3.1.0" />
<PackageVersion Include="Serilog.Extensions.Hosting" Version="8.0.0" /> <PackageVersion Include="Serilog.Extensions.Hosting" Version="8.0.0" />
<PackageVersion Include="Serilog.Extensions.Logging" Version="8.0.0" /> <PackageVersion Include="Serilog.Extensions.Logging" Version="8.0.0" />
<PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.0" /> <PackageVersion Include="Serilog.Settings.Configuration" Version="8.0.2" />
<PackageVersion Include="Serilog.Sinks.Async" Version="1.5.0" /> <PackageVersion Include="Serilog.Sinks.Async" Version="2.0.0" />
<PackageVersion Include="Serilog.Sinks.Console" Version="5.0.0" /> <PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" />
<PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="9.0.3" /> <PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="9.0.3" />
<PackageVersion Include="Serilog.Sinks.File" Version="5.0.0" /> <PackageVersion Include="Serilog.Sinks.File" Version="6.0.0" />
</ItemGroup> </ItemGroup>
<!-- Test --> <!-- Test -->
<ItemGroup> <ItemGroup>
<PackageVersion Include="coverlet.collector" Version="6.0.0" /> <PackageVersion Include="coverlet.collector" Version="6.0.2" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.8.0" /> <PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
<PackageVersion Include="Moq.AutoMock" Version="3.0.0" /> <PackageVersion Include="Moq.AutoMock" Version="3.0.0" />
<PackageVersion Include="NSubstitute" Version="5.1.0" /> <PackageVersion Include="NSubstitute" Version="5.1.0" />
<PackageVersion Include="Shouldly" Version="4.2.1" /> <PackageVersion Include="Shouldly" Version="4.2.1" />
<PackageVersion Include="xunit" Version="2.6.1" /> <PackageVersion Include="xunit" Version="2.9.2" />
<PackageVersion Include="xunit.extensibility.execution" Version="2.6.1" /> <PackageVersion Include="xunit.extensibility.execution" Version="2.9.2" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.3" /> <PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
</ItemGroup> </ItemGroup>
<!-- Fody --> <!-- Fody -->
@ -453,33 +459,25 @@
<!-- Other --> <!-- Other -->
<ItemGroup> <ItemGroup>
<PackageVersion Include="aliyun-net-sdk-core" Version="1.5.10" /> <PackageVersion Include="aliyun-net-sdk-core" Version="1.5.10" />
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.13.0" /> <PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
<PackageVersion Include="AgileConfig.Client" Version="1.6.9" /> <PackageVersion Include="AgileConfig.Client" Version="1.6.9" />
<PackageVersion Include="Dapr.Client" Version="1.12.0" /> <PackageVersion Include="Dapr.Client" Version="1.14.0" />
<PackageVersion Include="Dapr.Actors" Version="1.12.0" /> <PackageVersion Include="Dapr.Actors" Version="1.14.0" />
<PackageVersion Include="Dapr.Actors.AspNetCore" Version="1.12.0" /> <PackageVersion Include="Dapr.Actors.AspNetCore" Version="1.14.0" />
<PackageVersion Include="DistributedLock.Core" Version="1.0.5" /> <PackageVersion Include="DistributedLock.Core" Version="1.0.7" />
<PackageVersion Include="DistributedLock.Redis" Version="1.0.2" /> <PackageVersion Include="DistributedLock.Redis" Version="1.0.3" />
<PackageVersion Include="Hangfire.MySqlStorage" Version="2.0.3" /> <PackageVersion Include="Hangfire.MySqlStorage" Version="2.0.3" />
<PackageVersion Include="HangFire.SqlServer" Version="1.8.6" /> <PackageVersion Include="HangFire.SqlServer" Version="1.8.17" />
<PackageVersion Include="IdentityModel" Version="6.2.0" /> <PackageVersion Include="IdentityModel" Version="7.0.0" />
<PackageVersion Include="JetBrains.Annotations" Version="2023.3.0" /> <PackageVersion Include="JetBrains.Annotations" Version="2024.2.0" />
<PackageVersion Include="Markdig" Version="0.34.0" /> <PackageVersion Include="Markdig" Version="0.34.0" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" /> <PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="NEST" Version="7.15.1" /> <PackageVersion Include="NEST" Version="7.17.5" />
<PackageVersion Include="NRules" Version="0.9.2" /> <PackageVersion Include="NRules" Version="0.9.2" />
<PackageVersion Include="Ocelot.Provider.Polly" Version="20.0.0" /> <PackageVersion Include="Ocelot.Provider.Polly" Version="20.0.0" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.8.1" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.8.1" />
<PackageVersion Include="OpenTelemetry.Exporter.Zipkin" Version="1.8.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.8.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.8.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.0.0-beta.11" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.8.1" />
<PackageVersion Include="Polly" Version="8.4.2" /> <PackageVersion Include="Polly" Version="8.4.2" />
<PackageVersion Include="Quartz.Serialization.Json" Version="3.7.0" /> <PackageVersion Include="Quartz.Serialization.Json" Version="3.13.0" />
<PackageVersion Include="RulesEngine" Version="4.0.0" /> <PackageVersion Include="RulesEngine" Version="5.0.5" />
<PackageVersion Include="Senparc.Weixin.MP" Version="16.18.9" /> <PackageVersion Include="Senparc.Weixin.MP" Version="16.18.9" />
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.5" /> <PackageVersion Include="SixLabors.ImageSharp" Version="3.1.5" />
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.4" /> <PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.4" />
@ -489,7 +487,7 @@
<PackageVersion Include="Tencent.QCloud.Cos.Sdk" Version="5.4.37" /> <PackageVersion Include="Tencent.QCloud.Cos.Sdk" Version="5.4.37" />
<PackageVersion Include="TencentCloudSDK" Version="3.0.712" /> <PackageVersion Include="TencentCloudSDK" Version="3.0.712" />
<PackageVersion Include="Yarp.ReverseProxy" Version="2.1.0" /> <PackageVersion Include="Yarp.ReverseProxy" Version="2.1.0" />
<PackageVersion Include="OpenIddict.Server.DataProtection" Version="5.8.0" /> <PackageVersion Include="OpenIddict.Server.DataProtection" Version="6.0.0" />
<PackageVersion Include="OpenIddict.Validation.DataProtection" Version="5.8.0" /> <PackageVersion Include="OpenIddict.Validation.DataProtection" Version="6.0.0" />
</ItemGroup> </ItemGroup>
</Project> </Project>

2
aspnet-core/templates/micro/content/PackageName.CompanyName.ProjectName.sln

@ -57,8 +57,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "migrations", "migrations",
EndProject EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".deploy", ".deploy", "{46954769-3C8A-4E05-912A-91B896A91B97}" Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".deploy", ".deploy", "{46954769-3C8A-4E05-912A-91B896A91B97}"
ProjectSection(SolutionItems) = preProject ProjectSection(SolutionItems) = preProject
deploy\docker-compose.override.yml = deploy\docker-compose.override.yml
deploy\deployment.yaml = deploy\deployment.yaml deploy\deployment.yaml = deploy\deployment.yaml
deploy\docker-compose.override.yml = deploy\docker-compose.override.yml
deploy\docker-compose.yml = deploy\docker-compose.yml deploy\docker-compose.yml = deploy\docker-compose.yml
EndProjectSection EndProjectSection
EndProject EndProject

4
aspnet-core/templates/micro/content/common.props

@ -1,12 +1,12 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<Version>9.0.4</Version> <Version>9.1.1</Version>
<Authors>colin</Authors> <Authors>colin</Authors>
<NoWarn>$(NoWarn);CS1591;CS0436;CS8618;NU1803</NoWarn> <NoWarn>$(NoWarn);CS1591;CS0436;CS8618;NU1803</NoWarn>
<PackageProjectUrl>https://github.com/colinin/abp-next-admin</PackageProjectUrl> <PackageProjectUrl>https://github.com/colinin/abp-next-admin</PackageProjectUrl>
<PackageOutputPath>$(SolutionDir)LocalNuget</PackageOutputPath> <PackageOutputPath>$(SolutionDir)LocalNuget</PackageOutputPath>
<PackageVersion>9.0.4</PackageVersion> <PackageVersion>9.1.1</PackageVersion>
<PackageLicenseExpression>MIT</PackageLicenseExpression> <PackageLicenseExpression>MIT</PackageLicenseExpression>
<RepositoryType>git</RepositoryType> <RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/colinin/abp-next-admin</RepositoryUrl> <RepositoryUrl>https://github.com/colinin/abp-next-admin</RepositoryUrl>

2
aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Dockerfile

@ -1,4 +1,4 @@
FROM mcr.microsoft.com/dotnet/aspnet:8.0 FROM mcr.microsoft.com/dotnet/aspnet:9.0
LABEL maintainer="colin.in@foxmail.com" LABEL maintainer="colin.in@foxmail.com"
WORKDIR /app WORKDIR /app

13
aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj

@ -15,7 +15,6 @@
<PackageReference Include="DotNetCore.CAP.PostgreSql" Condition="'$(PostgreSql)'=='true'" /> <PackageReference Include="DotNetCore.CAP.PostgreSql" Condition="'$(PostgreSql)'=='true'" />
<PackageReference Include="DotNetCore.CAP.Sqlite" Condition="'$(Sqlite)'=='true'" /> <PackageReference Include="DotNetCore.CAP.Sqlite" Condition="'$(Sqlite)'=='true'" />
<PackageReference Include="DotNetCore.CAP.RabbitMQ" /> <PackageReference Include="DotNetCore.CAP.RabbitMQ" />
<PackageReference Include="DotNetCore.CAP.OpenTelemetry" />
<PackageReference Include="LINGYUN.Abp.AspNetCore.HttpOverrides" /> <PackageReference Include="LINGYUN.Abp.AspNetCore.HttpOverrides" />
<PackageReference Include="LINGYUN.Abp.AspNetCore.Mvc.Localization" /> <PackageReference Include="LINGYUN.Abp.AspNetCore.Mvc.Localization" />
<PackageReference Include="LINGYUN.Abp.AspNetCore.Mvc.Wrapper" /> <PackageReference Include="LINGYUN.Abp.AspNetCore.Mvc.Wrapper" />
@ -31,16 +30,13 @@
<PackageReference Include="LINGYUN.Abp.Serilog.Enrichers.Application" /> <PackageReference Include="LINGYUN.Abp.Serilog.Enrichers.Application" />
<PackageReference Include="LINGYUN.Abp.Serilog.Enrichers.UniqueId" /> <PackageReference Include="LINGYUN.Abp.Serilog.Enrichers.UniqueId" />
<PackageReference Include="LINGYUN.Abp.TextTemplating.EntityFrameworkCore" /> <PackageReference Include="LINGYUN.Abp.TextTemplating.EntityFrameworkCore" />
<PackageReference Include="LINGYUN.Abp.Telemetry.SkyWalking" Condition="'$(SkyWalking)'=='true'" />
<PackageReference Include="LINGYUN.Abp.Telemetry.OpenTelemetry" Condition="'$(OpenTelemetry)'=='true'" />
<PackageReference Include="LINGYUN.Abp.Emailing.Platform" />
<PackageReference Include="LINGYUN.Abp.Sms.Platform" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" />
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" /> <PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" />
<PackageReference Include="DistributedLock.Redis" /> <PackageReference Include="DistributedLock.Redis" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" />
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" />
<PackageReference Include="OpenTelemetry.Exporter.Zipkin" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" />
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" />
<PackageReference Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" />
<PackageReference Include="Serilog.AspNetCore" /> <PackageReference Include="Serilog.AspNetCore" />
<PackageReference Include="Serilog.Enrichers.Environment" /> <PackageReference Include="Serilog.Enrichers.Environment" />
<PackageReference Include="Serilog.Enrichers.Assembly" /> <PackageReference Include="Serilog.Enrichers.Assembly" />
@ -55,7 +51,6 @@
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" /> <PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" />
<PackageReference Include="Volo.Abp.Autofac" /> <PackageReference Include="Volo.Abp.Autofac" />
<PackageReference Include="Volo.Abp.DistributedLocking" /> <PackageReference Include="Volo.Abp.DistributedLocking" />
<PackageReference Include="Volo.Abp.MailKit" />
<PackageReference Include="Volo.Abp.Swashbuckle" /> <PackageReference Include="Volo.Abp.Swashbuckle" />
<PackageReference Include="Volo.Abp.Http.Client.IdentityModel.Web" /> <PackageReference Include="Volo.Abp.Http.Client.IdentityModel.Web" />
<PackageReference Include="Volo.Abp.FeatureManagement.EntityFrameworkCore" /> <PackageReference Include="Volo.Abp.FeatureManagement.EntityFrameworkCore" />

92
aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Program.cs

@ -3,66 +3,56 @@ using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using PackageName.CompanyName.ProjectName;
using Serilog; using Serilog;
using System; using System;
using System.IO; using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.IO; using Volo.Abp.IO;
using Volo.Abp.Modularity.PlugIns; using Volo.Abp.Modularity.PlugIns;
namespace PackageName.CompanyName.ProjectName; try
public class Program
{ {
public async static Task<int> Main(string[] args) Console.Title = "Web.Host";
{ Log.Information("Starting ProjectName api host.");
try
{
Console.Title = "Web.Host";
Log.Information("Starting web host.");
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
builder.Host builder.Host
.AddAppSettingsSecretsJson() .AddAppSettingsSecretsJson()
.UseAutofac() .UseAutofac()
.ConfigureAppConfiguration((context, config) => .ConfigureAppConfiguration((context, config) =>
{ {
var agileConfig = context.Configuration.GetSection("AgileConfig");//IsEnabled var agileConfig = context.Configuration.GetSection("AgileConfig");//IsEnabled
if (agileConfig.Exists()) if (agileConfig.Exists())
{
var isAgileConfigEnabled = agileConfig["IsEnabled"];
if (isAgileConfigEnabled.IsNullOrWhiteSpace() || bool.Parse(isAgileConfigEnabled))
{
config.AddAgileConfig(new AgileConfig.Client.ConfigClient(context.Configuration));
}
}
})
.UseSerilog((context, provider, config) =>
{
config.ReadFrom.Configuration(context.Configuration);
});
await builder.AddApplicationAsync<ProjectNameHttpApiHostModule>(options =>
{ {
ProjectNameHttpApiHostModule.ApplicationName = Environment.GetEnvironmentVariable("APPLICATION_NAME") if (agileConfig.GetValue("IsEnabled", false))
?? ProjectNameHttpApiHostModule.ApplicationName; {
options.ApplicationName = ProjectNameHttpApiHostModule.ApplicationName; config.AddAgileConfig(new AgileConfig.Client.ConfigClient(context.Configuration));
// 搜索 Modules 目录下所有文件作为插件 }
// 取消显示引用所有其他项目的模块,改为通过插件的形式引用 }
var pluginFolder = Path.Combine(Directory.GetCurrentDirectory(), "Modules"); })
.UseSerilog((context, provider, config) =>
{
config.ReadFrom.Configuration(context.Configuration);
});
await builder.AddApplicationAsync<ProjectNameHttpApiHostModule>(options =>
{
ProjectNameHttpApiHostModule.ApplicationName = Environment.GetEnvironmentVariable("APPLICATION_NAME")
?? ProjectNameHttpApiHostModule.ApplicationName;
options.ApplicationName = ProjectNameHttpApiHostModule.ApplicationName;
// 搜索 Modules 目录下所有文件作为插件
// 取消显示引用所有其他项目的模块,改为通过插件的形式引用
var pluginFolder = Path.Combine(Directory.GetCurrentDirectory(), "Modules");
DirectoryHelper.CreateIfNotExists(pluginFolder); DirectoryHelper.CreateIfNotExists(pluginFolder);
options.PlugInSources.AddFolder(pluginFolder, SearchOption.AllDirectories); options.PlugInSources.AddFolder(pluginFolder, SearchOption.AllDirectories);
}); });
var app = builder.Build(); var app = builder.Build();
await app.InitializeApplicationAsync(); await app.InitializeApplicationAsync();
await app.RunAsync(); await app.RunAsync();
return 0; return 0;
}
finally
{
Log.CloseAndFlush();
}
}
} }
finally
{
Log.CloseAndFlush();
}

79
aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs

@ -1,10 +1,9 @@
using DotNetCore.CAP; using DotNetCore.CAP;
using LINGYUN.Abp.Dapr.Client.ClientProxying; using LINGYUN.Abp.Dapr.Client.ClientProxying;
using LINGYUN.Abp.Dapr.Client.DynamicProxying;
using LINGYUN.Abp.ExceptionHandling; using LINGYUN.Abp.ExceptionHandling;
using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.ExceptionHandling.Emailing;
using LINGYUN.Abp.Localization.CultureMap; using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.Localization.Persistence; using LINGYUN.Abp.LocalizationManagement;
using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.Application;
using LINGYUN.Abp.Serilog.Enrichers.UniqueId; using LINGYUN.Abp.Serilog.Enrichers.UniqueId;
using LINGYUN.Abp.Wrapper; using LINGYUN.Abp.Wrapper;
@ -18,15 +17,10 @@ using Microsoft.AspNetCore.Routing;
using Microsoft.Extensions.Caching.StackExchangeRedis; using Microsoft.Extensions.Caching.StackExchangeRedis;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models; using Microsoft.OpenApi.Models;
using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using PackageName.CompanyName.ProjectName.Localization; using PackageName.CompanyName.ProjectName.Localization;
using StackExchange.Redis; using StackExchange.Redis;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text.Encodings.Web; using System.Text.Encodings.Web;
using System.Text.Unicode; using System.Text.Unicode;
@ -35,7 +29,6 @@ using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc.AntiForgery; using Volo.Abp.AspNetCore.Mvc.AntiForgery;
using Volo.Abp.Auditing; using Volo.Abp.Auditing;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.GlobalFeatures; using Volo.Abp.GlobalFeatures;
using Volo.Abp.Http.Client; using Volo.Abp.Http.Client;
using Volo.Abp.Json; using Volo.Abp.Json;
@ -44,8 +37,8 @@ using Volo.Abp.Localization;
using Volo.Abp.MultiTenancy; using Volo.Abp.MultiTenancy;
using Volo.Abp.Security.Claims; using Volo.Abp.Security.Claims;
using Volo.Abp.Threading; using Volo.Abp.Threading;
using Volo.Abp.Timing;
using Volo.Abp.VirtualFileSystem; using Volo.Abp.VirtualFileSystem;
using static IdentityModel.ClaimComparer;
namespace PackageName.CompanyName.ProjectName; namespace PackageName.CompanyName.ProjectName;
@ -142,54 +135,6 @@ public partial class ProjectNameHttpApiHostModule
services.AddSingleton<IDistributedLockProvider>(_ => new RedisDistributedSynchronizationProvider(redis.GetDatabase())); services.AddSingleton<IDistributedLockProvider>(_ => new RedisDistributedSynchronizationProvider(redis.GetDatabase()));
} }
} }
private void ConfigureOpenTelemetry(IServiceCollection services, IConfiguration configuration)
{
var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"];
if (openTelemetryEnabled.IsNullOrEmpty() || bool.Parse(openTelemetryEnabled))
{
services.AddOpenTelemetry()
.ConfigureResource(resource =>
{
resource.AddService(ApplicationName);
})
.WithTracing(tracing =>
{
tracing.AddHttpClientInstrumentation();
tracing.AddAspNetCoreInstrumentation();
tracing.AddCapInstrumentation();
tracing.AddEntityFrameworkCoreInstrumentation();
tracing.AddSource(ApplicationName);
var tracingOtlpEndpoint = configuration["OpenTelemetry:Otlp:Endpoint"];
if (!tracingOtlpEndpoint.IsNullOrWhiteSpace())
{
tracing.AddOtlpExporter(otlpOptions =>
{
otlpOptions.Endpoint = new Uri(tracingOtlpEndpoint);
});
return;
}
var zipkinEndpoint = configuration["OpenTelemetry:ZipKin:Endpoint"];
if (!zipkinEndpoint.IsNullOrWhiteSpace())
{
tracing.AddZipkinExporter(zipKinOptions =>
{
zipKinOptions.Endpoint = new Uri(zipkinEndpoint);
});
return;
}
})
.WithMetrics(metrics =>
{
metrics.AddRuntimeInstrumentation();
metrics.AddHttpClientInstrumentation();
metrics.AddAspNetCoreInstrumentation();
});
}
}
private void ConfigureExceptionHandling() private void ConfigureExceptionHandling()
{ {
// 自定义需要处理的异常 // 自定义需要处理的异常
@ -240,6 +185,14 @@ public partial class ProjectNameHttpApiHostModule
}); });
} }
private void ConfigureTiming(IConfiguration configuration)
{
Configure<AbpClockOptions>(options =>
{
configuration.GetSection("Clock").Bind(options);
});
}
private void ConfigureCaching(IConfiguration configuration) private void ConfigureCaching(IConfiguration configuration)
{ {
Configure<AbpDistributedCacheOptions>(options => Configure<AbpDistributedCacheOptions>(options =>
@ -344,13 +297,6 @@ public partial class ProjectNameHttpApiHostModule
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文")); options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
}); });
Configure<AbpLocalizationPersistenceOptions>(options =>
{
// 持久化本地化资源
options.SaveStaticLocalizationsToPersistence = true;
options.AddPersistenceResource<ProjectNameResource>();
});
Configure<AbpLocalizationCultureMapOptions>(options => Configure<AbpLocalizationCultureMapOptions>(options =>
{ {
var zhHansCultureMapInfo = new CultureMapInfo var zhHansCultureMapInfo = new CultureMapInfo
@ -362,6 +308,11 @@ public partial class ProjectNameHttpApiHostModule
options.CulturesMaps.Add(zhHansCultureMapInfo); options.CulturesMaps.Add(zhHansCultureMapInfo);
options.UiCulturesMaps.Add(zhHansCultureMapInfo); options.UiCulturesMaps.Add(zhHansCultureMapInfo);
}); });
Configure<AbpLocalizationManagementOptions>(options =>
{
options.SaveStaticLocalizationsToDatabase = true;
});
} }
private void ConfigureSecurity(IServiceCollection services, IConfiguration configuration, bool isDevelopment = false) private void ConfigureSecurity(IServiceCollection services, IConfiguration configuration, bool isDevelopment = false)

21
aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs

@ -1,6 +1,7 @@
using LINGYUN.Abp.AspNetCore.HttpOverrides; using LINGYUN.Abp.AspNetCore.HttpOverrides;
using LINGYUN.Abp.AspNetCore.Mvc.Wrapper; using LINGYUN.Abp.AspNetCore.Mvc.Wrapper;
using LINGYUN.Abp.AuditLogging.Elasticsearch; using LINGYUN.Abp.AuditLogging.Elasticsearch;
using LINGYUN.Abp.Emailing.Platform;
using LINGYUN.Abp.EventBus.CAP; using LINGYUN.Abp.EventBus.CAP;
using LINGYUN.Abp.ExceptionHandling.Emailing; using LINGYUN.Abp.ExceptionHandling.Emailing;
using LINGYUN.Abp.Identity.Session.AspNetCore; using LINGYUN.Abp.Identity.Session.AspNetCore;
@ -8,6 +9,12 @@ using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore;
using LINGYUN.Abp.Saas.EntityFrameworkCore; using LINGYUN.Abp.Saas.EntityFrameworkCore;
using LINGYUN.Abp.Serilog.Enrichers.Application; using LINGYUN.Abp.Serilog.Enrichers.Application;
using LINGYUN.Abp.Serilog.Enrichers.UniqueId; using LINGYUN.Abp.Serilog.Enrichers.UniqueId;
using LINGYUN.Abp.Sms.Platform;
#if SkyWalking
using LINGYUN.Abp.Telemetry.SkyWalking;
#elif OpenTelemetry
using LINGYUN.Abp.Telemetry.OpenTelemetry;
#endif
using LINGYUN.Abp.TextTemplating.EntityFrameworkCore; using LINGYUN.Abp.TextTemplating.EntityFrameworkCore;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
@ -24,7 +31,6 @@ using Volo.Abp.Caching.StackExchangeRedis;
using Volo.Abp.DistributedLocking; using Volo.Abp.DistributedLocking;
using Volo.Abp.FeatureManagement.EntityFrameworkCore; using Volo.Abp.FeatureManagement.EntityFrameworkCore;
using Volo.Abp.Http.Client.IdentityModel.Web; using Volo.Abp.Http.Client.IdentityModel.Web;
using Volo.Abp.MailKit;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement.EntityFrameworkCore; using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.SettingManagement.EntityFrameworkCore; using Volo.Abp.SettingManagement.EntityFrameworkCore;
@ -57,7 +63,13 @@ namespace PackageName.CompanyName.ProjectName;
typeof(AbpAspNetCoreMvcWrapperModule), typeof(AbpAspNetCoreMvcWrapperModule),
typeof(AbpAspNetCoreHttpOverridesModule), typeof(AbpAspNetCoreHttpOverridesModule),
typeof(AbpIdentitySessionAspNetCoreModule), typeof(AbpIdentitySessionAspNetCoreModule),
typeof(AbpMailKitModule), #if SkyWalking
typeof(AbpTelemetrySkyWalkingModule),
#elif OpenTelemetry
typeof(AbpTelemetryOpenTelemetryModule),
#endif
typeof(AbpEmailingPlatformModule),
typeof(AbpSmsPlatformModule),
typeof(AbpSwashbuckleModule), typeof(AbpSwashbuckleModule),
typeof(AbpAutofacModule) typeof(AbpAutofacModule)
)] )]
@ -82,6 +94,7 @@ public partial class ProjectNameHttpApiHostModule : AbpModule
ConfigureLocalization(); ConfigureLocalization();
ConfigureExceptionHandling(); ConfigureExceptionHandling();
ConfigureVirtualFileSystem(); ConfigureVirtualFileSystem();
ConfigureTiming(configuration);
ConfigureCaching(configuration); ConfigureCaching(configuration);
ConfigureAuditing(configuration); ConfigureAuditing(configuration);
ConfigureIdentity(configuration); ConfigureIdentity(configuration);
@ -90,7 +103,6 @@ public partial class ProjectNameHttpApiHostModule : AbpModule
ConfigureSwagger(context.Services); ConfigureSwagger(context.Services);
ConfigureMvc(context.Services, configuration); ConfigureMvc(context.Services, configuration);
ConfigureCors(context.Services, configuration); ConfigureCors(context.Services, configuration);
ConfigureOpenTelemetry(context.Services, configuration);
ConfigureDistributedLock(context.Services, configuration); ConfigureDistributedLock(context.Services, configuration);
ConfigureSecurity(context.Services, configuration, hostingEnvironment.IsDevelopment()); ConfigureSecurity(context.Services, configuration, hostingEnvironment.IsDevelopment());
} }
@ -103,13 +115,14 @@ public partial class ProjectNameHttpApiHostModule : AbpModule
app.UseForwardedHeaders(); app.UseForwardedHeaders();
app.UseMapRequestLocalization(); app.UseMapRequestLocalization();
app.UseCorrelationId(); app.UseCorrelationId();
app.UseStaticFiles(); app.MapAbpStaticAssets();
app.UseRouting(); app.UseRouting();
app.UseCors(); app.UseCors();
app.UseAuthentication(); app.UseAuthentication();
app.UseJwtTokenMiddleware(); app.UseJwtTokenMiddleware();
app.UseMultiTenancy(); app.UseMultiTenancy();
app.UseAbpSession(); app.UseAbpSession();
app.UseUnitOfWork();
app.UseDynamicClaims(); app.UseDynamicClaims();
app.UseAuthorization(); app.UseAuthorization();
app.UseSwagger(); app.UseSwagger();

47
aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json

@ -36,12 +36,53 @@
} }
}, },
"OpenTelemetry": { "OpenTelemetry": {
"IsEnabled": true, "IsEnabled": false,
"Console": {
"IsEnabled": false
},
"ZipKin": { "ZipKin": {
"Endpoint": "http://127.0.0.1:9411/api/v2/spans" "Endpoint": "",
"EndpointExample": "http://127.0.0.1:9411/api/v2/spans"
},
"Otlp": {
"Endpoint": "",
"EndpointExample": "127.0.0.1:5078"
}
},
"SkyWalking": {
"IsEnabled": false,
"HeaderVersions": [
"sw8"
],
"Logging": {
"FilePath": "logs\\skyapm-{Date}.log",
"Level": "Information"
},
"Namespace": "Framework",
"Sampling": {
"Percentage": "-1.0",
"SamplePer3Secs": "-1"
},
"Transport": {
"BatchSize": "3000",
"gRPC": {
"Authentication": "",
"ConnectTimeout": "10000",
"ReportTimeout": "600000",
"Servers": "127.0.0.1:11800",
"Timeout": "10000"
},
"Interval": "3000",
"ProtocolVersion": "v8",
"QueueSize": "30000"
}
},
"RemoteServices": {
"Platform": {
"BaseUrl": "http://127.0.0.1:30025",
"UseCurrentAccessToken": "False"
} }
}, },
"RemoteServices": {},
"IdentityClients": { "IdentityClients": {
"InternalServiceClient": { "InternalServiceClient": {
"Authority": "http://127.0.0.1:44385", "Authority": "http://127.0.0.1:44385",

2
aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.json

@ -5,7 +5,7 @@
"HealthChecks": "/healthz" "HealthChecks": "/healthz"
}, },
"Clock": { "Clock": {
"Kind": "Local" "Kind": "Unspecified"
}, },
"Forwarded": { "Forwarded": {
"ForwardedHeaders": "XForwardedFor,XForwardedProto" "ForwardedHeaders": "XForwardedFor,XForwardedProto"

2
aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore.csproj

@ -4,8 +4,6 @@
<Import Project="../../configureawait.props" /> <Import Project="../../configureawait.props" />
<PropertyGroup> <PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>

2
aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbContextFactory.cs

@ -12,7 +12,7 @@ public class ProjectNameDbContextFactory : IDesignTimeDbContextFactory<ProjectNa
var configuration = BuildConfiguration(); var configuration = BuildConfiguration();
var connectionString = configuration.GetConnectionString("ProjectName"); var connectionString = configuration.GetConnectionString("ProjectName");
DbContextOptionsBuilder<ProjectNameDbContext> builder = null; DbContextOptionsBuilder<ProjectNameDbContext>? builder = null;
try try
{ {

1
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj

@ -10,6 +10,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

1
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj

@ -10,6 +10,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

6
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj

@ -5,6 +5,12 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net9.0</TargetFramework> <TargetFramework>net9.0</TargetFramework>
<AssemblyName>PackageName.CompanyName.ProjectName.Dapr.Client</AssemblyName>
<PackageId>PackageName.CompanyName.ProjectName.Dapr.Client</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

1
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj

@ -10,6 +10,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

1
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj

@ -10,6 +10,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

2
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDbProperties.cs

@ -4,7 +4,7 @@ public static class ProjectNameDbProperties
{ {
public static string DbTablePrefix { get; set; } = "ProjectName_"; public static string DbTablePrefix { get; set; } = "ProjectName_";
public static string DbSchema { get; set; } = null; public static string? DbSchema { get; set; } = null;
public const string ConnectionStringName = "ProjectName"; public const string ConnectionStringName = "ProjectName";

1
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj

@ -10,6 +10,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

21
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs

@ -17,16 +17,19 @@ namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
/// </summary> /// </summary>
/// <typeparam name="TEntity">实体类型</typeparam> /// <typeparam name="TEntity">实体类型</typeparam>
/// <typeparam name="TKey">实体主键类型</typeparam> /// <typeparam name="TKey">实体主键类型</typeparam>
public abstract class EfCoreProjectNameRepository<TEntity, TKey> : /// <typeparam name="TEntityAuth">实体数据权限类型/typeparam>
EfCoreDataProtectionRepository<IProjectNameDbContext, TEntity, TKey>, public abstract class EfCoreProjectNameRepository<TEntity, TKey, TEntityAuth> :
EfCoreDataProtectionRepository<IProjectNameDbContext, TEntity, TKey, TEntityAuth>,
IProjectNameBasicRepository<TEntity, TKey> IProjectNameBasicRepository<TEntity, TKey>
where TEntity : class, IEntity<TKey> where TEntity : class, IEntity<TKey>, IDataProtected
where TEntityAuth : DataAuthBase<TEntity, TKey>
{ {
protected EfCoreProjectNameRepository( protected EfCoreProjectNameRepository(
IDbContextProvider<IProjectNameDbContext> dbContextProvider, IDbContextProvider<IProjectNameDbContext> dbContextProvider,
IDataAuthorizationService dataAuthorizationService, IDataAuthorizationService dataAuthorizationService,
IEntityTypeFilterBuilder entityTypeFilterBuilder) IEntityTypeFilterBuilder entityTypeFilterBuilder,
: base(dbContextProvider, dataAuthorizationService, entityTypeFilterBuilder) IEntityPropertyResultBuilder entityPropertyResultBuilder)
: base(dbContextProvider, dataAuthorizationService, entityTypeFilterBuilder, entityPropertyResultBuilder)
{ {
} }
@ -34,7 +37,7 @@ public abstract class EfCoreProjectNameRepository<TEntity, TKey> :
ISpecification<TEntity> specification, ISpecification<TEntity> specification,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await (await GetDbSetAsync()) return await (await GetQueryableAsync())
.Where(specification.ToExpression()) .Where(specification.ToExpression())
.CountAsync(GetCancellationToken(cancellationToken)); .CountAsync(GetCancellationToken(cancellationToken));
} }
@ -46,7 +49,7 @@ public abstract class EfCoreProjectNameRepository<TEntity, TKey> :
int skipCount = 0, int skipCount = 0,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await (await GetDbSetAsync()) return await (await GetQueryableAsync())
.Where(specification.ToExpression()) .Where(specification.ToExpression())
.OrderBy(GetSortingOrDefault(sorting)) .OrderBy(GetSortingOrDefault(sorting))
.PageBy(skipCount, maxResultCount) .PageBy(skipCount, maxResultCount)
@ -59,7 +62,7 @@ public abstract class EfCoreProjectNameRepository<TEntity, TKey> :
int maxResultCount = 10, int maxResultCount = 10,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await (await GetDbSetAsync()) return await (await GetQueryableAsync())
.Where(specification.ToExpression()) .Where(specification.ToExpression())
.OrderBy(GetSortingOrDefault(sorting)) .OrderBy(GetSortingOrDefault(sorting))
.Take(maxResultCount) .Take(maxResultCount)

2
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContextModelCreatingExtensions.cs

@ -8,7 +8,7 @@ public static class ProjectNameDbContextModelCreatingExtensions
{ {
public static void ConfigureProjectName( public static void ConfigureProjectName(
this ModelBuilder builder, this ModelBuilder builder,
Action<ProjectNameModelBuilderConfigurationOptions> optionsAction = null) Action<ProjectNameModelBuilderConfigurationOptions>? optionsAction = null)
{ {
Check.NotNull(builder, nameof(builder)); Check.NotNull(builder, nameof(builder));

2
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameModelBuilderConfigurationOptions.cs

@ -7,7 +7,7 @@ public class ProjectNameModelBuilderConfigurationOptions : AbpModelBuilderConfig
{ {
public ProjectNameModelBuilderConfigurationOptions( public ProjectNameModelBuilderConfigurationOptions(
[NotNull] string tablePrefix = "", [NotNull] string tablePrefix = "",
[CanBeNull] string schema = null) [CanBeNull] string? schema = null)
: base( : base(
tablePrefix, tablePrefix,
schema) schema)

1
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj

@ -10,6 +10,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

1
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj

@ -10,6 +10,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

1
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj

@ -10,6 +10,7 @@
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute> <GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute> <GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute> <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<Nullable>enable</Nullable>
<RootNamespace /> <RootNamespace />
</PropertyGroup> </PropertyGroup>

10
aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingAppService.cs

@ -1,7 +1,7 @@
using LINGYUN.Abp.SettingManagement; using LINGYUN.Abp.SettingManagement;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using PackageName.CompanyName.ProjectName.Permissions;
using PackageName.CompanyName.ProjectName.Localization; using PackageName.CompanyName.ProjectName.Localization;
using PackageName.CompanyName.ProjectName.Permissions;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.Features; using Volo.Abp.Features;
@ -54,8 +54,6 @@ public class ProjectNameSettingAppService : ApplicationService, IProjectNameSett
{ {
await SettingManager.SetForTenantAsync(CurrentTenant.GetId(), setting.Name, setting.Value); await SettingManager.SetForTenantAsync(CurrentTenant.GetId(), setting.Name, setting.Value);
} }
await CurrentUnitOfWork.SaveChangesAsync();
} }
} }
@ -69,8 +67,6 @@ public class ProjectNameSettingAppService : ApplicationService, IProjectNameSett
{ {
await SettingManager.SetForCurrentUserAsync(setting.Name, setting.Value); await SettingManager.SetForCurrentUserAsync(setting.Name, setting.Value);
} }
await CurrentUnitOfWork.SaveChangesAsync();
} }
[Authorize(ProjectNamePermissions.ManageSettings)] [Authorize(ProjectNamePermissions.ManageSettings)]
@ -83,8 +79,6 @@ public class ProjectNameSettingAppService : ApplicationService, IProjectNameSett
{ {
await SettingManager.SetGlobalAsync(setting.Name, setting.Value); await SettingManager.SetGlobalAsync(setting.Name, setting.Value);
} }
await CurrentUnitOfWork.SaveChangesAsync();
} }
@ -93,7 +87,7 @@ public class ProjectNameSettingAppService : ApplicationService, IProjectNameSett
await FeatureChecker.CheckEnabledAsync(SettingManagementFeatures.Enable); await FeatureChecker.CheckEnabledAsync(SettingManagementFeatures.Enable);
} }
protected virtual async Task<SettingGroupResult> GetAllForProviderAsync(string providerName, string providerKey) protected virtual async Task<SettingGroupResult> GetAllForProviderAsync(string providerName, string? providerKey = null)
{ {
var settingGroups = new SettingGroupResult(); var settingGroups = new SettingGroupResult();

Loading…
Cancel
Save