Asp.Net Core WebApi Swagger+Autofac+JWTの実装(二)
この章では、Autofacのインプリメンテーションについて説明します.Autofacの説明とAPIについては、https://autofaccn.readthedocs.io/zh/latest/getting-started/index.html
プロジェクトの基礎構築については、前の記事を参照してください.https://blog.csdn.net/liwan09/article/details/100733455
NetCore.AppプロジェクトはNugetからAutofac、およびAutofacに追加する.Extensions.DependencyInjectionの2つのパッケージの参照
NetCore.WebApiプロジェクトNugetからAutofacを追加Extensions.DependencyInjectionパッケージの参照
NetCore.AppプロジェクトにAutoFacAppクラスを追加
NetCore.WebApiプロジェクトのStartup.csファイルの変更
1)コンフィギュレーションサービスメソッドの戻りタイプをIServiceProviderに変更する
2)ConfigureServicesメソッドの最後の行のコードは、IServiceProviderに戻ります.
NetCore.WebApiプロジェクトのNetCoreへの追加AppおよびNetCore.Repositoryの2つのプロジェクトの参照を作成し、プロジェクトにUserInfoControllerを追加します.
PostManでインタフェースを呼び出すことができます.テストしてみてください.データを取得すると、Autofac注入が実現します.
完全なコードのダウンロードアドレス:https://download.csdn.net/download/liwan09/11717224
プロジェクトの基礎構築については、前の記事を参照してください.https://blog.csdn.net/liwan09/article/details/100733455
Autofac注入の実装
NetCore.AppプロジェクトはNugetからAutofac、およびAutofacに追加する.Extensions.DependencyInjectionの2つのパッケージの参照
NetCore.WebApiプロジェクトNugetからAutofacを追加Extensions.DependencyInjectionパッケージの参照
NetCore.AppプロジェクトにAutoFacAppクラスを追加
using System;
using System.Reflection;
using Autofac;
using Autofac.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;
using NetCore.Repository;
namespace NetCore.App
{
///
/// AutoFac
///
public static class AutoFacApp
{
private static IContainer container;
///
///
///
///
///
public static IContainer InitAutoFac(IServiceCollection services)
{
var builder = new ContainerBuilder();
//
services.AddScoped(typeof(BaseRepository<>));
services.AddScoped(typeof(UnitWork));
// (App )
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly());
builder.Populate(services);
container = builder.Build();
return container;
}
///
///
///
///
public static T GetFromFac()
{
return container.Resolve();
}
}
}
NetCore.WebApiプロジェクトのStartup.csファイルの変更
1)コンフィギュレーションサービスメソッドの戻りタイプをIServiceProviderに変更する
2)ConfigureServicesメソッドの最後の行のコードは、IServiceProviderに戻ります.
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.Configure(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("NetCoreDBContext")));//
return new AutofacServiceProvider(AutoFacApp.InitAutoFac(services));
}
NetCore.WebApiプロジェクトのNetCoreへの追加AppおよびNetCore.Repositoryの2つのプロジェクトの参照を作成し、プロジェクトにUserInfoControllerを追加します.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using NetCore.App;
using NetCore.Repository;
using NetCore.Repository.Domain;
using NetCore.Repository.RequestEntity;
namespace NetCore.WebApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class UserInfoController : ControllerBase
{
private readonly UserInfoApp userInfoApp;
///
///
///
///
public UserInfoController(UserInfoApp _userInfoApp)
{
userInfoApp = _userInfoApp;
}
///
///
///
///
///
[HttpPut]
public ResponseResult Add(UserInfo userInfo)
{
if (userInfoApp.IsExist(userInfo.LoginAccount, userInfo.ID))
{
return new ResponseResult() { Code = 201, Message = " " };
}
return userInfoApp.Add(userInfo) ? new ResponseResult() : new ResponseResult() {Code=201,Message=" "};
}
///
///
///
///
///
[HttpGet]
public ResponseResult GetUserList(UserInfoRequest userInfoRequest)
{
var userList = userInfoApp.GetList(userInfoRequest);
return new ResponseResult() { DataResult=userList};
}
}
}
PostManでインタフェースを呼び出すことができます.テストしてみてください.データを取得すると、Autofac注入が実現します.
完全なコードのダウンロードアドレス:https://download.csdn.net/download/liwan09/11717224