Я хочу создать страницу, позволяющую создать базу данных и инициализировать данные приложения по умолчанию для каждого нового развертывания. для этого я создаю промежуточное ПО, которое проверяет, можно ли подключиться к базе данных. в случае невозможности подключения к базе данных (что означает, что база данных еще не существует), промежуточное программное обеспечение перенаправляет на действие приложения, отвечающего за сбор данных по умолчанию, и приступает к созданию базы данных. Однако в промежуточном программном обеспечении перенаправление не работает, несмотря на все попытки, кроме перенаправления на внешний сайт, такой как google.com. Я использую asp. net core 2.2 и entityframework core
MissingDatabaseMiddleware.cs
public class MissingDatabaseMiddleware
{
private readonly RequestDelegate _next;
private readonly string _missingTenantUrl;
public MissingDatabaseMiddleware(RequestDelegate next, string missingTenantUrl)
{
_next = next;
_missingTenantUrl = missingTenantUrl;
}
public async Task Invoke(HttpContext httpContext, MydbContext context)
{
if (!context.Database.CanConnect())
{
httpContext.Response.Redirect(_missingTenantUrl, false);
return;
}
await _next.Invoke(httpContext);
}
}
startup.cs
public void Configure(IApplicationBuilder app, Microsoft.AspNetCore.Hosting.IHostingEnvironment env, MydbContext, ILoggerFactory loggerFactory){
app.UseMiddleware<MissingDatabaseMiddleware>("/Setup/AppSetup");
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
});
}