116 lines
4.1 KiB
C#
116 lines
4.1 KiB
C#
// <copyright file="Startup.cs" company="MUnique">
|
|
// Licensed under the MIT License. See LICENSE file in the project root for full license information.
|
|
// </copyright>
|
|
|
|
namespace MUnique.OpenMU.Web.AdminPanel;
|
|
|
|
using System.IO;
|
|
using Microsoft.AspNetCore.Builder;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.FileProviders;
|
|
using Microsoft.Extensions.Hosting;
|
|
using MUnique.OpenMU.DataModel.Entities;
|
|
using MUnique.OpenMU.Web.AdminPanel.Components;
|
|
using MUnique.OpenMU.Web.AdminPanel.Services;
|
|
using MUnique.OpenMU.Web.Shared;
|
|
using MUnique.OpenMU.Web.Shared.Components.Modal;
|
|
using MUnique.OpenMU.Web.Shared.Models;
|
|
using MUnique.OpenMU.Web.Shared.Services;
|
|
|
|
/// <summary>
|
|
/// The startup class for the blazor app.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// This class is only used when running as all-in-one deployment.
|
|
/// </remarks>
|
|
public class Startup
|
|
{
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="Startup"/> class.
|
|
/// </summary>
|
|
/// <param name="configuration">The configuration.</param>
|
|
public Startup(IConfiguration configuration)
|
|
{
|
|
this.Configuration = configuration;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the configuration.
|
|
/// </summary>
|
|
/// <value>
|
|
/// The configuration.
|
|
/// </value>
|
|
public IConfiguration Configuration { get; }
|
|
|
|
/// <summary>
|
|
/// This method gets called by the runtime. Use this method to add services to the container.
|
|
/// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940.
|
|
/// </summary>
|
|
/// <param name="services">The service collection.</param>
|
|
public void ConfigureServices(IServiceCollection services)
|
|
{
|
|
services.AddRazorComponents()
|
|
.AddInteractiveServerComponents();
|
|
|
|
services.AddSignalR().AddJsonProtocol(o => o.PayloadSerializerOptions.Converters.Add(new TimeSpanConverter()));
|
|
|
|
services.AddControllers()
|
|
.ConfigureApplicationPartManager(setup =>
|
|
setup.FeatureProviders.Add(new GenericControllerFeatureProvider()));
|
|
|
|
services.AddToasts();
|
|
services.AddScoped<ModalService>();
|
|
services.AddScoped<IModalService>(sp => sp.GetRequiredService<ModalService>());
|
|
|
|
services.AddSingleton<ILookupController, PersistentObjectsLookupController>();
|
|
services.AddSingleton<ConfigurationSearchIndexCache>();
|
|
|
|
services.AddScoped<AccountService>();
|
|
services.AddScoped<IDataService<Account>>(serviceProvider => serviceProvider.GetService<AccountService>()!);
|
|
|
|
services.AddScoped<PlugInController>();
|
|
services.AddScoped<IDataService<PlugInConfigurationViewItem>>(serviceProvider => serviceProvider.GetService<PlugInController>()!);
|
|
services.AddScoped<CreationPanelService>();
|
|
|
|
services.AddScoped<IChangeNotificationService, ChangeNotificationService>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
|
/// </summary>
|
|
/// <param name="app">The app builder.</param>
|
|
/// <param name="env">The web host environment.</param>
|
|
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
|
{
|
|
if (env.IsDevelopment())
|
|
{
|
|
app.UseDeveloperExceptionPage();
|
|
}
|
|
else
|
|
{
|
|
app.UseExceptionHandler("/Error", createScopeForErrors: true);
|
|
|
|
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
|
|
app.UseHsts();
|
|
}
|
|
|
|
app.UseHttpsRedirection();
|
|
app.UseStaticFiles();
|
|
app.UseStaticFiles(new StaticFileOptions
|
|
{
|
|
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "logs")),
|
|
RequestPath = "/logs",
|
|
});
|
|
|
|
app.UseAntiforgery();
|
|
|
|
app.UseEndpoints(endpoints =>
|
|
{
|
|
endpoints.MapRazorComponents<App>()
|
|
.AddInteractiveServerRenderMode();
|
|
endpoints.MapControllers();
|
|
});
|
|
}
|
|
} |