-
-
Save mohanssbs/78b7205ec5fde662c824f2859d9d5b40 to your computer and use it in GitHub Desktop.
Forms .NET Core Project - startup.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Linq; | |
using System.Reflection; | |
using Microsoft.AspNetCore.Builder; | |
using Microsoft.AspNetCore.Hosting; | |
using Microsoft.AspNetCore.Mvc.Cors.Internal; | |
using Microsoft.Extensions.Configuration; | |
using Microsoft.Extensions.DependencyInjection; | |
using Microsoft.Extensions.Logging; | |
using Castle.Facilities.Logging; | |
using Swashbuckle.AspNetCore.Swagger; | |
using Abp.AspNetCore; | |
using Abp.Castle.Logging.Log4Net; | |
using Abp.Extensions; | |
using FCL.Forms.Authentication.JwtBearer; | |
using FCL.Forms.Configuration; | |
using FCL.Forms.Identity; | |
using Abp.AspNetCore.SignalR.Hubs; | |
using Microsoft.AspNetCore.Http; | |
namespace FCL.Forms.Web.Host.Startup | |
{ | |
public class Startup | |
{ | |
private const string _defaultCorsPolicyName = "localhost"; | |
private readonly IConfigurationRoot _appConfiguration; | |
public Startup(IHostingEnvironment env) | |
{ | |
_appConfiguration = env.GetAppConfiguration(); | |
} | |
public IServiceProvider ConfigureServices(IServiceCollection services) | |
{ | |
// MVC | |
services.AddMvc( | |
options => options.Filters.Add(new CorsAuthorizationFilterFactory(_defaultCorsPolicyName)) | |
); | |
IdentityRegistrar.Register(services); | |
AuthConfigurer.Configure(services, _appConfiguration); | |
services.AddSignalR(); | |
// Configure CORS for angular2 UI | |
services.AddCors( | |
options => options.AddPolicy( | |
_defaultCorsPolicyName, | |
builder => builder | |
.WithOrigins( | |
// App:CorsOrigins in appsettings.json can contain more than one address separated by comma. | |
_appConfiguration["App:CorsOrigins"] | |
.Split(",", StringSplitOptions.RemoveEmptyEntries) | |
.Select(o => o.RemovePostFix("/")) | |
.ToArray() | |
) | |
.SetIsOriginAllowedToAllowWildcardSubdomains() //all wildcards in CORS | |
.AllowAnyHeader() | |
.AllowAnyMethod() | |
.AllowCredentials() | |
) | |
); | |
// Swagger - Enable this line and the related lines in Configure method to enable swagger UI | |
services.AddSwaggerGen(options => | |
{ | |
options.SwaggerDoc("v1", new Info { Title = "Forms API", Version = "v1" }); | |
options.DocInclusionPredicate((docName, description) => true); | |
// Define the BearerAuth scheme that's in use | |
options.AddSecurityDefinition("bearerAuth", new ApiKeyScheme() | |
{ | |
Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", | |
Name = "Authorization", | |
In = "header", | |
Type = "apiKey" | |
}); | |
// Assign scope requirements to operations based on AuthorizeAttribute | |
options.OperationFilter<SecurityRequirementsOperationFilter>(); | |
}); | |
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); | |
// Configure Abp and Dependency Injection | |
return services.AddAbp<FormsWebHostModule>( | |
// Configure Log4Net logging | |
options => options.IocManager.IocContainer.AddFacility<LoggingFacility>( | |
f => f.UseAbpLog4Net().WithConfig("log4net.config") | |
) | |
); | |
} | |
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) | |
{ | |
app.UseAbp(options => { options.UseAbpRequestLocalization = false; }); // Initializes ABP framework. | |
app.UseCors(_defaultCorsPolicyName); // Enable CORS! | |
app.UseStaticFiles(); | |
app.UseAuthentication(); | |
app.UseAbpRequestLocalization(); | |
app.UseSignalR(routes => | |
{ | |
routes.MapHub<AbpCommonHub>("/signalr"); | |
}); | |
app.UseMvc(routes => | |
{ | |
routes.MapRoute( | |
name: "defaultWithArea", | |
template: "{area}/{controller=Home}/{action=Index}/{id?}"); | |
routes.MapRoute( | |
name: "default", | |
template: "{controller=Home}/{action=Index}/{id?}"); | |
}); | |
// Enable middleware to serve generated Swagger as a JSON endpoint | |
app.UseSwagger(); | |
// Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.) | |
app.UseSwaggerUI(options => | |
{ | |
options.SwaggerEndpoint("/swagger/v1/swagger.json", "Forms API V1"); | |
options.IndexStream = () => Assembly.GetExecutingAssembly() | |
.GetManifestResourceStream("FCL.Forms.Web.Host.wwwroot.swagger.ui.index.html"); | |
}); // URL: /swagger | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment