Ars.Common.AutoFac 1.9.1

dotnet add package Ars.Common.AutoFac --version 1.9.1                
NuGet\Install-Package Ars.Common.AutoFac -Version 1.9.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Ars.Common.AutoFac" Version="1.9.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Ars.Common.AutoFac --version 1.9.1                
#r "nuget: Ars.Common.AutoFac, 1.9.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Ars.Common.AutoFac as a Cake Addin
#addin nuget:?package=Ars.Common.AutoFac&version=1.9.1

// Install Ars.Common.AutoFac as a Cake Tool
#tool nuget:?package=Ars.Common.AutoFac&version=1.9.1                

<p align="center"> <img height="140" src="https://github.com/aabb1212/Ars/blob/master/logo.png"> </p>

Ars

NuGet

a simple .net6 webapi framework with some extensions.
include autofac,consul,grpc,efcore,identityserver4,redis,signalr,localization,skyapm,upload and download excel,
cap,ocelot,webapiclientcore extensions. and some samples with them.

Getting Started

NuGet

ars can be installed in your project with the following command.

PM> Install-Package Ars.Common.Host

ars supports some extensions, following packages are available to install:

PM> Install-Package Ars.Common.IdentityServer4
PM> Install-Package Ars.Common.Consul
PM> Install-Package Ars.Common.EFCore
PM> Install-Package Ars.Common.Redis
PM> Install-Package Ars.Common.SignalR
PM> Install-Package Ars.Common.SkyWalking
PM> Install-Package Ars.Common.Cap
PM> Install-Package Ars.Common.Ocelot
PM> Install-Package Ars.Common.RpcClientCore

Configuration

add Service:
var builder = WebApplication.CreateBuilder(args);
builder.Services
    //add ars core service
    .AddArserviceCore(builder, config =>
    {
        //add consul client service
        config.AddArsConsulDiscoverClient();
	 
        //add consul register service
        config.AddArsConsulRegisterServer();

        //add identity resource service
        config.AddArsIdentityClient();
	 
        //add identity server service
        config.AddArsIdentityServer();

        //add redis service
        config.AddArsRedis();

        //add localization service
        config.AddArsLocalization();

        //add signalr service
        config.AddArsSignalR(config =>
        {
		config.CacheType = 0;
		config.UseMessagePackProtocol = true;
        });

	//add skyapm service
	config.AddArsSkyApm();

	//add cap service
	config.AddArsCap(option => 
	{
		option.UseEntityFramework<xxxDbContext>();
		option.UseRabbitMQ(mq => 
		{
			mq.HostName = "localhost";
			mq.UserName = "guest";
			mq.Password = "guest";
		});
	});

	//add ocelot service
	//example service -> sample/main/ArsApiGateway
	config.AddArsOcelot(option => 
	{
		//如果下游协议是https则添加下面代码
		//option.AddDelegatingHandler<X509CertificateDelegatingHandler>();
	});

	//add webapiclientcore service
	config.AddArsHttpApi<IWeatherForecastHttpApi>(option =>
	{
		//采用ars默认的httpclient
		option.UseArsHttpClient = true;
		//采用ars默认的HttpsMessageHandler
		option.UseHttps = true;
		//采用ars默认的策略
		option.UseHttpClientCustomPolicy = true;
	});
	config.AddArsHttpApi<IDbHttpApi>(configureBuilder:builder => 
	{
		//可添加自定义策略
		builder.AddArsTransientHttpErrorPolicy();
		//可添加自定义HttpsMessageHandler
		builder.ConfigureArsPrimaryHttpsMessageHandler();
	});
})

//add dbcontext service
.AddArsDbContext<xxxDbContext>()

//add exportexcel service
.AddArsExportExcelService(typeof(Program).Assembly)

//add uploadexcel service
.AddArsUploadExcelService(option =>
{
	option.UploadRoot = "wwwroot/upload";
	option.RequestPath = "apps/upload";
	option.SlidingExpireTime = TimeSpan.FromDays(1);
});
use Application:
    var app = builder.Build();
    
    //ars exception middleware
    app.UsArsExceptionMiddleware();

	.....

    //use ars core application
    app.UseArsCore() 
    //use uploadexcel application
    .UseArsUploadExcel();
change your appsettings.Development.json
	{
	  "Logging": {
		"LogLevel": {
		  "Default": "Information",
		  "Microsoft.AspNetCore": "Warning"
		}
	  },
	  //consul client config
	  "ConsulDiscoverConfiguration": {
		"ConsulDiscovers": [
		  {
			"ConsulAddress": "http://ip:port",
			"ServiceName": "apigrpc",
			"Communication":{
			    "CommunicationWay":0,
				"GrpcUseHttp1Protocol": true,
				"UseHttps": true,
				"UseIdentityServer4Valid": true,
				"IdentityServer4Address": "http://ip:port",
				"ClientId": "grpc-key",
				"ClientSecret": "grpc-secret",
				"Scope": "grpcapi-scope",
				"GrantType": "client_credentials"
			}
		  }
		]
	  },
	  
	  //consul register config
	  "ConsulRegisterConfiguration": {
		"ConsulAddress": "http://ip:port",
		"ServiceName": "apigrpc",
		"UseHttps": true,
	  },
	  
	  //resource server identity config
	  "ArsIdentityClientConfiguration": {
		"Authority": "http://ip:port",
		"ApiName": "apiIds4Second", 
		"RequireHttpsMetadata": true,
	  },
	  
	  //identity server config
	  "ArsIdentityServerConfiguration": {
		"ArsApiResources": [
		  {
			"Name": "apiIds4First",
			"DisplayName": "my default grpcapi",
			"UserClaims": [
			  "http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
			  "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
			  "tenant",
			  "sub"
			],
			"Scopes": [
			  "grpcapi-scope"
			]
		  },
		  {
			"Name": "apiIds4Second",
			"DisplayName": "my default pckeapi",
			"UserClaims": [
			  "http://schemas.microsoft.com/ws/2008/06/identity/claims/role",
			  "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name",
			  "tenant",
			  "sub"
			],
			"Scopes": [
			  "ids4-scope",
			  "openid",
			  "profile"
			]
		  }
		],
		"ArsClients": [
		  {
			"AppKey": "grpc-key",
			"AppSecret": "grpc-secret",
			"AccessTokenLifetime": 3600,
			"AllowedScopes": [ "grpcapi-scope" ],
			"GrantType": [ "client_credentials", "password" ],
			"AllowedCorsOrigins": [ "http://ip:port" ]
		  },
		  {
			"AppKey": "pcke-key",
			"AppSecret": "pcke-secret",
			"AccessTokenLifetime": 3600,
			"AllowedScopes": [ "openid", "profile", "ids4-scope" ],
			"GrantType": [ "authorization_code" ],
			"RedirectUris": [ "http://ip:port/signin-oidc" ],
			"PostLogoutRedirectUris": [ "http://ip:port/signout-callback-oidc" ]
		  }
		],
		"ArsApiScopes": [
		  "grpcapi-scope",
		  "ids4-scope",
		  "openid",
		  "profile"
		],
	  },
	  
	  //redis config
	  "ArsCacheConfiguration": {
		"RedisConnection": "ip",
		"DefaultDB": 1
	  },

	  //localization config
	  "ArsLocalizationConfiguration": {
		"ResourcesPath": "Resources",
		"IsAddViewLocalization": true,
		"IsAddDataAnnotationsLocalization": true,
		"Cultures": [
		  "en-GB",
		  "en",
		  "fr-FR",
		  "fr",
		  "en-US",
		  "zh-Hans"
		],
		"DefaultRequestCulture": "en-US"
	  },
	  
	  //DbContext config
	  "ArsDbContextConfiguration": {
		//1 mysql;2 mssql
		"DbType": 2,
		//Database address
		"DefaultString": "Data Source=xxxxx; Initial Catalog=xxxxx;user id=xxxxx;pwd=xxxxx"
	  },

	  //Basic config
	  "ArsBasicConfiguration": {
		 "ServiceIp": "192.168.110.65",
		 "ServicePort": 5105,
		 "CertificatePath": "Certificates//IS4.pfx",
		 "CertificatePassWord": "aabb1212",
		 "UseHttps": true
	  }
	}

License

MIT

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Ars.Common.AutoFac:

Package Downloads
Ars.Common.Host

a simple WebApiFramework with .net6

Ars.Common.EFCore

EFCore Extensions

Ars.Common.Redis

Redis Extensions

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.9.1 242 1/11/2024
1.9.0 217 12/15/2023
1.8.0 197 12/7/2023
1.7.3 278 10/19/2023
1.7.0 294 8/3/2023
1.6.2 243 5/31/2023
1.6.1 265 5/19/2023
1.5.3 260 5/11/2023
1.5.2 331 4/4/2023
1.5.1 404 3/24/2023
1.4.0 427 3/6/2023
1.3.0 329 2/10/2023
1.2.0 433 2/9/2023