Is there a way to debug the Volo.Abp.Emailing source code project when it's called from my web MVC project? Please don't refer me to the other queries on how this can be accomplished as they do not work.
* 2021-09-07 06:59:39.828 -04:00 [INF] End processing HTTP request after 73.7044ms - 200
2021-09-07 06:59:39.847 -04:00 [INF] Executed handler method OnGetAsync, returned result Microsoft.AspNetCore.Mvc.RazorPages.PageResult.
2021-09-07 06:59:39.985 -04:00 [INF] Executed page /Account/Login in 1105.0193ms
2021-09-07 06:59:39.985 -04:00 [INF] Executed endpoint '/Account/Login'
2021-09-07 06:59:39.990 -04:00 [INF] Request finished HTTP/2 GET https://localhost:44386/Account/Login - - - 200 - text/html;+charset=utf-8 1143.7610ms
2021-09-07 06:59:40.017 -04:00 [INF] Request starting HTTP/2 GET https://localhost:44386/site.webmanifest - -
2021-09-07 06:59:40.023 -04:00 [INF] Request finished HTTP/2 GET https://localhost:44386/site.webmanifest - - - 404 - - 6.3240ms
2021-09-07 06:59:41.313 -04:00 [INF] Request starting HTTP/2 GET https://localhost:44386/Account/ForgotPassword - -
2021-09-07 06:59:41.325 -04:00 [INF] Executing endpoint '/Account/ForgotPassword'
2021-09-07 06:59:41.328 -04:00 [INF] Route matched with {page = "/Account/ForgotPassword", action = "", controller = "", area = ""}. Executing page /Account/ForgotPassword
2021-09-07 06:59:41.328 -04:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy
2021-09-07 06:59:41.441 -04:00 [INF] Executing handler method StructureWeb.Web.Pages.Account.MyForgotPasswordModel.OnGetAsync - ModelState is "Valid"
2021-09-07 06:59:41.442 -04:00 [INF] Executed handler method OnGetAsync, returned result Microsoft.AspNetCore.Mvc.RazorPages.PageResult.
2021-09-07 06:59:41.514 -04:00 [INF] Executed page /Account/ForgotPassword in 185.6143ms
2021-09-07 06:59:41.514 -04:00 [INF] Executed endpoint '/Account/ForgotPassword'
2021-09-07 06:59:41.514 -04:00 [INF] Request finished HTTP/2 GET https://localhost:44386/Account/ForgotPassword - - - 200 - text/html;+charset=utf-8 201.3382ms
2021-09-07 06:59:41.531 -04:00 [INF] Request starting HTTP/2 GET https://localhost:44386/site.webmanifest - -
2021-09-07 06:59:41.537 -04:00 [INF] Request finished HTTP/2 GET https://localhost:44386/site.webmanifest - - - 404 - - 5.4743ms
2021-09-07 06:59:44.127 -04:00 [INF] Request starting HTTP/2 POST https://localhost:44386/Account/ForgotPassword application/x-www-form-urlencoded 214
2021-09-07 06:59:44.142 -04:00 [INF] No CORS policy found for the specified request.
2021-09-07 06:59:44.143 -04:00 [INF] Executing endpoint '/Account/ForgotPassword'
2021-09-07 06:59:44.143 -04:00 [INF] Route matched with {page = "/Account/ForgotPassword", action = "", controller = "", area = ""}. Executing page /Account/ForgotPassword
2021-09-07 06:59:44.143 -04:00 [INF] Skipping the execution of current filter as its not the most effective filter implementing the policy Microsoft.AspNetCore.Mvc.ViewFeatures.IAntiforgeryPolicy
2021-09-07 06:59:44.203 -04:00 [INF] Executing handler method StructureWeb.Web.Pages.Account.MyForgotPasswordModel.OnPostAsync - ModelState is "Valid"
2021-09-07 06:59:44.224 -04:00 [WRN] Could not find IdentityClientConfiguration for AbpAccountPublic. Either define a configuration for AbpAccountPublic or set a default configuration.
2021-09-07 06:59:44.224 -04:00 [INF] Start processing HTTP request POST "https://localhost:44382/api/account/send-password-reset-code?api-version=1.0"
2021-09-07 06:59:44.224 -04:00 [INF] Sending HTTP request POST "https://localhost:44382/api/account/send-password-reset-code?api-version=1.0"
2021-09-07 06:59:58.124 -04:00 [INF] Received HTTP response headers after 13900.1645ms - 500
2021-09-07 06:59:58.124 -04:00 [INF] End processing HTTP request after 13900.3426ms - 500
2021-09-07 06:59:59.317 -04:00 [INF] Executed page /Account/ForgotPassword in 15173.8054ms
2021-09-07 06:59:59.423 -04:00 [INF] Executed endpoint '/Account/ForgotPassword'
2021-09-07 07:00:01.362 -04:00 [ERR] An unhandled exception has occurred while executing the request.
Volo.Abp.Http.Client.AbpRemoteCallException: An internal error occurred during your request!
at Volo.Abp.Http.Client.DynamicProxying.DynamicHttpProxyInterceptor`1.ThrowExceptionForResponseAsync(HttpResponseMessage response)
at Volo.Abp.Http.Client.DynamicProxying.DynamicHttpProxyInterceptor`1.MakeRequestAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Http.Client.DynamicProxying.DynamicHttpProxyInterceptor`1.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
at Volo.Abp.Validation.ValidationInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
at Volo.Abp.Account.Public.Web.Pages.Account.ForgotPasswordModel.OnPostAsync() in C:\Projects\modules\Volo.Account.Pro\src\Volo.Abp.Account.Pro.Public.Web\Pages\Account\ForgotPassword.cshtml.cs:line 35
at StructureWeb.Web.Pages.Account.MyForgotPasswordModel.OnPostAsync() in C:\Projects\src\StructureWebSaas\src\StructureWeb.Web\Pages\Account\ForgotPassword.cshtml.cs:line 45
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.GenericTaskHandlerMethod.Convert[T](Object taskAsObject)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.ExecutorFactory.GenericTaskHandlerMethod.Execute(Object receiver, Object[] arguments)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeHandlerMethodAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeNextPageFilterAsync()
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Rethrow(PageHandlerExecutedContext context)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.PageActionInvoker.InvokeInnerFilterAsync()
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ExceptionContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Volo.Abp.AspNetCore.Serilog.AbpSerilogMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at IdentityServer4.Hosting.IdentityServerMiddleware.Invoke(HttpContext context, IEndpointRouter router, IUserSession session, IEventService events, IBackChannelLogoutService backChannelLogoutService)
at IdentityServer4.Hosting.MutualTlsEndpointMiddleware.Invoke(HttpContext context, IAuthenticationSchemeProvider schemes)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at IdentityServer4.Hosting.BaseUrlMiddleware.Invoke(HttpContext context)
at Volo.Abp.AspNetCore.MultiTenancy.MultiTenancyMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.RequestLocalization.AbpRequestLocalizationMiddleware.InvokeAsync(HttpContext context, RequestDelegate next)
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
2021-09-07 07:00:01.416 -04:00 [INF] Request finished HTTP/2 POST https://localhost:44386/Account/ForgotPassword application/x-www-form-urlencoded 214 - 500 - text/html;+charset=utf-8 17288.8165ms
I get the above message when executing the following block of code in the Volo.Account.Pro\src\Volo.Abp.Account.Pro.Public.Application\Volo\Abp\Account\Emailing\AccountEmailer.cs class file
await EmailSender.SendAsync( user.Email, StringLocalizer["PasswordReset"], emailContent );
I have overriden the default login page and call the base OnPostAsync() method but when the result is returned the user is still not authenticated. I looked in the log and I'm getting an error for the IdentityClientConfiguration for AbpAccountPublic. Either define a configuration for AbpAccountPublic or set a default configuration. How do I override this to see accoring to what my ideneityclient configurations are?
I've generated a solution from ABP suite with the above mentioned options. I've chosen to remove all the abp generated prefixes to all the tables using the below code blocks, but when I click the 'Forgot password' link on the standard 'Login Page' and enter the email for the user I wish to send an email to, I get the above detailed error.
I've specified the below code in the program.cs class of the IdentityServer, HttpAPI.Host projects in addition to adding the block to the DbMigratorHostedService.cs class in the DbMirgrator project.
AbpPermissionManagementDbProperties.DbTablePrefix = string.Empty;
AbpSettingManagementDbProperties.DbTablePrefix = string.Empty;
AbpCommonDbProperties.DbTablePrefix = string.Empty;
SaasDbProperties.DbTablePrefix = string.Empty;
AbpIdentityServerDbProperties.DbTablePrefix = string.Empty;
Additionally in the DBContextBase.cs class of the .EntityFrameworkCore project I've specified this block of code.
builder.ConfigurePermissionManagement(options => { options.TablePrefix = ""; });
builder.ConfigureSettingManagement(options => { options.TablePrefix = ""; });
builder.ConfigureBackgroundJobs(options => { options.TablePrefix = ""; });
builder.ConfigureAuditLogging(options => { options.TablePrefix = ""; });
builder.ConfigureIdentityPro(options => { options.TablePrefix = ""; });
builder.ConfigureIdentityServer(options => { options.TablePrefix = ""; });
builder.ConfigureFeatureManagement(options => { options.TablePrefix = ""; });
builder.ConfigureLanguageManagement(options => { options.TablePrefix = ""; });
builder.ConfigureSaas(options => { options.TablePrefix = ""; });
builder.ConfigureTextTemplateManagement(options => { options.TablePrefix = ""; });
builder.ConfigureBlobStoring(options => { options.TablePrefix = ""; });
After generating a MVC/EF Core/PostgreSQL/Not Tiered/Seperate Schema solution with ABP suite, I run the two migrations and see the data, but when I run the web project I get the following error.
Tenant not found! There is no tenant with the tenant id or name: 39fe712f-a185-00ae-3daa-3b94ccc3ecaa
* This exception was originally thrown at this call stack:
SELECT a."Id", a."Name", a."ProviderKey", a."ProviderName", a."Value"
FROM "AbpSettings" AS a
WHERE (a."ProviderName" = @__providerName_0) AND (a."ProviderKey" IS NULL)
[13:07:11 ERR] An exception occurred while iterating over the results of a query for context type 'Volo.Abp.SettingManagement.EntityFrameworkCore.SettingManagementDbContext'.
Npgsql.PostgresException (0x80004005): 42P01: relation "AbpSettings" does not exist
at Npgsql.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|194_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken)
at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
Exception data:
Severity: ERROR
SqlState: 42P01
MessageText: relation "AbpSettings" does not exist
Position: 77
File: parse_relation.c
Line: 1373
Routine: parserOpenTable
Npgsql.PostgresException (0x80004005): 42P01: relation "AbpSettings" does not exist
at Npgsql.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|194_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken)
at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
Exception data:
Severity: ERROR
SqlState: 42P01
MessageText: relation "AbpSettings" does not exist
Position: 77
File: parse_relation.c
Line: 1373
Routine: parserOpenTable
In my OnModelCreating method of the *DbContextBase.cs file I have the following code to remove the 'abp' prefix from the table names.
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
/* Include modules to your migration db context */
builder.ConfigurePermissionManagement(options => { options.TablePrefix = ""; });
builder.ConfigureSettingManagement(options => { options.TablePrefix = ""; });
builder.ConfigureBackgroundJobs(options => { options.TablePrefix = ""; });
builder.ConfigureAuditLogging(options => { options.TablePrefix = ""; });
builder.ConfigureIdentityPro(options => { options.TablePrefix = ""; });
builder.ConfigureIdentityServer(options => { options.TablePrefix = ""; });
builder.ConfigureFeatureManagement(options => { options.TablePrefix = ""; });
builder.ConfigureLanguageManagement(options => { options.TablePrefix = ""; });
builder.ConfigureSaas(options => { options.TablePrefix = ""; });
builder.ConfigureTextTemplateManagement(options => { options.TablePrefix = ""; });
builder.ConfigureBlobStoring(options => { options.TablePrefix = ""; });
/* Configure your own tables/entities inside here */
//builder.Entity<YourEntity>(b =>
//{
// b.ToTable(MVCTierdSepSchemaConsts.DbTablePrefix + "YourEntities", MVCTierdSepSchemaConsts.DbSchema);
// b.ConfigureByConvention(); //auto configure for the base class props
// //...
//});
//if (builder.IsHostDatabase())
//{
// /* Tip: Configure mappings like that for the entities only available in the host side,
// * but should not be in the tenant databases. */
//}
}
I get the following error then trying to render a login page. Stack trace and Login.cshtml code is below
An unhandled exception occurred while processing the request.
DependencyResolutionException: None of the constructors found with 'Volo.Abp.Autofac.AbpAutofacConstructorFinder' on type 'Castle.Proxies.IdentityUserManagerProxy' can be invoked with the available services and parameters:
Cannot resolve parameter 'Volo.Abp.Identity.IIdentityRoleRepository roleRepository' of constructor 'Void .ctor(Castle.DynamicProxy.IInterceptor[], Volo.Abp.Identity.IdentityUserStore, Volo.Abp.Identity.IIdentityRoleRepository, Volo.Abp.Identity.IIdentityUserRepository, Microsoft.Extensions.Options.IOptions`1[Microsoft.AspNetCore.Identity.IdentityOptions], Microsoft.AspNetCore.Identity.IPasswordHasher`1[Volo.Abp.Identity.IdentityUser], System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Identity.IUserValidator`1[Volo.Abp.Identity.IdentityUser]], System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Identity.IPasswordValidator`1[Volo.Abp.Identity.IdentityUser]], Microsoft.AspNetCore.Identity.ILookupNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber, System.IServiceProvider, Microsoft.Extensions.Logging.ILogger`1[Volo.Abp.Identity.IdentityUserManager], Volo.Abp.Threading.ICancellationTokenProvider, Volo.Abp.Identity.IOrganizationUnitRepository, Volo.Abp.Settings.ISettingProvider)'.
Autofac.Core.Activators.Reflection.ReflectionActivator.GetAllBindings(ConstructorBinder[] availableConstructors, IComponentContext context, IEnumerable<Parameter> parameters)
DependencyResolutionException: An exception was thrown while activating Volo.Abp.Account.Web.Pages.Account.IdentityServerSupportedLoginModel -> Volo.Abp.Identity.AspNetCore.AbpSignInManager -> Castle.Proxies.IdentityUserManagerProxy.
Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action<ResolveRequestContext> next)
@page
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.Account.Localization
@using ABPWeb.Localization
@model Volo.Abp.Account.Public.Web.Pages.Account.LoginModel
@inject IHtmlLocalizer<AccountResource> L
@inject IHtmlLocalizer<ABPWebResource> LE
@inject Volo.Abp.AspNetCore.Mvc.UI.Layout.IPageLayout PageLayout
@{
PageLayout.Content.Title = L["Login"].Value;
}
@section styles{
<abp-style src="/Pages/Account/Login.css" />
}
<div class="account-module-form">
@if (Model.EnableLocalLogin)
{
<form method="post">
<input asp-for="ReturnUrl"/>
<input asp-for="ReturnUrlHash"/>
<abp-input asp-for="LoginInput.UserNameOrEmailAddress" required-symbol="false"/>
<small id="username-info">@LE["UsernameInfo"]</small>
<abp-input asp-for="LoginInput.Password" required-symbol="false"/>
<small id="password-info">@LE["PasswordInfo"]</small>
<abp-row>
<abp-column>
<abp-input asp-for="LoginInput.RememberMe" class="mb-4"/>
</abp-column>
<abp-column class="text-right">
<a href="@Url.Page("./ForgotPassword", new { returnUrl = Model.ReturnUrl, returnUrlHash = Model.ReturnUrlHash })">@L["ForgotPassword"]</a>
</abp-column>
</abp-row>
<abp-button button-type="Primary" size="Block" type="submit" class="mt-2 mb-3" name="Action" value="Login">@L["Login"]</abp-button>
@if (Model.ShowCancelButton)
{
<abp-button button-type="Secondary" size="Block" type="submit" formnovalidate="formnovalidate" class="mt-2 mb-3" name="Action" value="Cancel">@L["Cancel"]</abp-button>
}
</form>
@if (Model.IsSelfRegistrationEnabled)
{
@L["NotAMemberYet"]
<a href="@Url.Page("./Register", new {returnUrl = Model.ReturnUrl, returnUrlHash = Model.ReturnUrlHash})">@L["Register"]</a>
}
}
@if (Model.VisibleExternalProviders.Any())
{
<hr/>
@L["OrSignInWith"]<br/>
<form asp-page="./Login" asp-page-handler="ExternalLogin" asp-route-returnUrl="@Model.ReturnUrl" asp-route-returnUrlHash="@Model.ReturnUrlHash" method="post">
<input asp-for="ReturnUrl"/>
<input asp-for="ReturnUrlHash"/>
@foreach (var provider in Model.VisibleExternalProviders)
{
<button
type="submit"
class="mt-2 mr-2 btn btn-outline-primary btn-sm"
name="provider"
value="@provider.AuthenticationScheme"
data-busy-text="@L["ProcessingWithThreeDot"]">
@if (provider.Icon != null)
{
<i class="@provider.Icon"></i>
}
<span>@provider.DisplayName</span>
</button>
}
</form>
}
@if (!Model.EnableLocalLogin && !Model.VisibleExternalProviders.Any())
{
<div class="alert alert-warning">
<strong>Invalid login request</strong>
There are no login schemes configured for this client.
</div>
}
</div>
ABP Framework version: v4.4.0 UI type: Blazor DB provider: EF Core Tiered (MVC) or Identity Server Separated (Angular): yes Exception message and stack trace: Steps to reproduce the issue:"
Is there a comprehensive open source or feature rich application (like an ecommerce site) showcasing real world scenarios using ABP? What I'm having a hard time figuring out is how to do the most basic standard web application tasks using ABP and a real-world sample application would be beneficial as a reference for further investigation.
ABP Framework version: v4.4.0 UI type: Blazor DB provider: EF Core Tiered (MVC) or Identity Server Separated (Angular): yes Exception message and stack trace: Steps to reproduce the issue:"
I would like to override the existing layout of the stock theme that comes with ABP. In other words I want to have multiple base layouts that I can set programitically for certain pages, etc. How can this be accomplished?
I have an ABP project that has the Identity Server project seperated but what I would like to do is to have the tables that it creates residing in a seperate database from all the other ABP tables that get created during the initial migration. I want no other ABP tables in this same database and I would also like to change the default prefix of the table that get created for Identity Server. How can this be done?