Files
2019-06-17 21:47:23 +08:00

113 lines
4.4 KiB
C#

using System;
using System.IO;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Swashbuckle.AspNetCore.Swagger;
using Util.Datas.Ef;
using Util.Datas.Ef.Configs;
using Util.Logs.Extensions;
using Util.Samples.Data;
using Util.Webs.Extensions;
namespace Util.Samples {
/// <summary>
/// 启动配置
/// </summary>
public class Startup {
/// <summary>
/// 初始化启动配置
/// </summary>
/// <param name="configuration">配置</param>
public Startup( IConfiguration configuration ) {
Configuration = configuration;
}
/// <summary>
/// 配置
/// </summary>
public IConfiguration Configuration { get; }
/// <summary>
/// 配置服务
/// </summary>
public IServiceProvider ConfigureServices( IServiceCollection services ) {
//添加Mvc服务
services.AddMvc( options => {
//options.Filters.Add( new AutoValidateAntiforgeryTokenAttribute() );
} ).SetCompatibilityVersion( CompatibilityVersion.Version_2_2 );
//添加NLog日志操作
services.AddNLog();
//添加EF工作单元
//====== 支持Sql Server 2012+ ==========
services.AddUnitOfWork<ISampleUnitOfWork, Util.Samples.Data.UnitOfWorks.SqlServer.SampleUnitOfWork>( Configuration.GetConnectionString( "DefaultConnection" ) );
//======= 支持Sql Server 2005+ ==========
//services.AddUnitOfWork<ISampleUnitOfWork, Util.Samples.Data.UnitOfWorks.SqlServer.SampleUnitOfWork>( builder => {
// builder.UseSqlServer( Configuration.GetConnectionString( "DefaultConnection" ), option => option.UseRowNumberForPaging() );
//} );
//======= 支持PgSql =======
//services.AddUnitOfWork<ISampleUnitOfWork, Util.Samples.Data.UnitOfWorks.PgSql.SampleUnitOfWork>( Configuration.GetConnectionString( "PgSqlConnection" ) );
//======= 支持MySql =======
//services.AddUnitOfWork<ISampleUnitOfWork, Util.Samples.Data.UnitOfWorks.MySql.SampleUnitOfWork>( Configuration.GetConnectionString( "MySqlConnection" ) );
//======= 支持Oracle 12g =======
//services.AddUnitOfWork<ISampleUnitOfWork, Util.Samples.Data.UnitOfWorks.Oracle.SampleUnitOfWork>( Configuration.GetConnectionString( "OracleConnection" ) );
//添加Swagger
services.AddSwaggerGen( options => {
options.SwaggerDoc( "v1", new Info { Title = "Util Api Demo", Version = "v1" } );
options.IncludeXmlComments( Path.Combine( AppContext.BaseDirectory, "Util.Samples.xml" ) );
} );
//添加Util基础设施服务
return services.AddUtil();
}
/// <summary>
/// 配置开发环境请求管道
/// </summary>
public void ConfigureDevelopment( IApplicationBuilder app ) {
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseWebpackDevMiddleware( new WebpackDevMiddlewareOptions {
HotModuleReplacement = true
} );
app.UseSwaggerX();
CommonConfig( app );
}
/// <summary>
/// 配置生产环境请求管道
/// </summary>
public void ConfigureProduction( IApplicationBuilder app ) {
app.UseExceptionHandler( "/Home/Error" );
CommonConfig( app );
}
/// <summary>
/// 公共配置
/// </summary>
private void CommonConfig( IApplicationBuilder app ) {
app.UseErrorLog();
app.UseStaticFiles();
app.UseAuthentication();
ConfigRoute( app );
}
/// <summary>
/// 路由配置,支持区域
/// </summary>
private void ConfigRoute( IApplicationBuilder app ) {
app.UseMvc( routes => {
routes.MapRoute( "areaRoute", "view/{area:exists}/{controller}/{action=Index}/{id?}" );
routes.MapRoute( "default", "{controller=Home}/{action=Index}/{id?}" );
routes.MapSpaFallbackRoute( "spa-fallback", new { controller = "Home", action = "Index" } );
} );
}
}
}