I am trying to extend the TenantAppService and add my own methods to it while retaining the base class/interface methods/properties. So for example, I want to add a method called GetListAllAsync that returnes a list of SassTenantDto objects vs a list of PagedResultDto<SaasTenantDto>. I don't want to override the out of the box class, but just want my own methods added to it when constructor inject ITenantAppService into my razor page.
Do you have a sample of how to do this?
I am trying to show an iFrame within the content area of the Lepton theme layout. I keep getting a cross-origin issue in my solutions "Web" (non public) project even though I have added the 'CorsOrigins' entry in the 'App' section of my appsettings.json file. Additionaly I have added the following block of code to my 'WebModule' code, but they browser is still giving me the 'blocked a frame with origin "xxxx" from accessing a cross-origin frame.
context.Services.AddCors(options =>
{
options.AddDefaultPolicy(builder =>
{
builder
.WithOrigins(
configuration["App:CorsOrigins"]
.Split(",", StringSplitOptions.RemoveEmptyEntries)
.Select(o => o.Trim().RemovePostFix("/"))
.ToArray()
)
.WithAbpExposedHeaders()
.SetIsOriginAllowedToAllowWildcardSubdomains()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
I've implemented the DefaultBrandingProvider class to put the logon on the identity server 'login' screen and it does not use the image I provided in the logoUrl property.
Hi,
I'm a little confused. In what way does the EmailSendDemo actually use the ABP framework? There are no references to any of the ABP framework libraries and the code uses base the .net system.net.mail library directly.
The good news though is that I've validated I can send an email within our network using the smtp settings I'm specifying, however I still do not know why I can't use the Volo.Abp.Emailing to send an email nor can I actually step through it's code as described above.
Hi,
All I'm trying to do is to step through the Volo.Abp.Emailing source code to determine what the core issue is as to why my web project cannot send a 'forgot my password' email. I don't need to override any service, just trying to troubleshoot why email is not being sent.
When I have tried manually grabbing the Volo.Abp.Emailing source code from github and adding a project reference to it in my ABP generated source code for a MVC project, it does not step into the source and rather just runs the line of code without stepping into it's source.
Please advise.
Hi,
I get the following error when I run the abp add-package Volo.Abp.Emailing --with-source-code --add-to-solution-file comma
[09:54:36 INF] Successfully installed. [09:54:36 INF] Downloading source code of Volo.Abp.Emailing [09:54:36 INF] Version: 4.4.2 [09:54:36 INF] Output folder: C:\Projects\TestWEB\src\TestWebSaas\packages\Volo.Abp.Emailing [09:54:36 ERR] Package is not found or downloadable! System.Exception: Package is not found or downloadable! at Volo.Abp.Cli.ProjectBuilding.NugetPackageInfoProvider.GetAsync(String name) in D:\ci\Jenkins\workspace\abp-framework-release\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\ProjectBuilding\NugetPackageInfoProvider.cs:line 41 at Volo.Abp.Cli.ProjectBuilding.NugetPackageProjectBuilder.GetPackageInfoAsync(ProjectBuildArgs args) in D:\ci\Jenkins\workspace\abp-framework-release\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\ProjectBuilding\NugetPackageProjectBuilder.cs:line 107 at Volo.Abp.Cli.ProjectBuilding.NugetPackageProjectBuilder.BuildAsync(ProjectBuildArgs args) in D:\ci\Jenkins\workspace\abp-framework-release\abp\framework\src\Volo.Abp.Cli.Core\Volo\Abp\Cli\ProjectBuilding\NugetPackageProjectBuilder.cs:line 46
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 );
Below is my overridden OnPostAync method. The .IsAuthenticated is returning true when I supply the improper credentials now. Please tell me how this code block should look like for me to interrogate the result of the base.OnPostAsync method and to determine if authentication was successful or not so I can redirect the application to the appropriate page.
Thanks.
public override async Task<IActionResult> OnPostAsync(string action)
{
ReturnUrl = "../HostDashboard";
var result = await base.OnPostAsync(action);
var user = await GetIdentityUser(LoginInput.UserNameOrEmailAddress);
if (user != null)
{
using (CurrentPrincipalAccessor.Change(await SignInManager.CreateUserPrincipalAsync(user)))
{
if (CurrentUser.IsAuthenticated)
{
return RedirectToPage(ReturnUrl);
}
}
}
return Page();
}
This is my ConfigureAuthentication method
private void ConfigureAuthentication(ServiceConfigurationContext context, IConfiguration configuration)
{
context.Services.AddAuthentication(options =>
{
})
.AddCookie("Cookies", options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(365);
})
.AddAbpOpenIdConnect("oidc", options =>
{
options.Authority = configuration["AuthServer:Authority"];
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);;
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.ClientId = configuration["AuthServer:ClientId"];
options.ClientSecret = configuration["AuthServer:ClientSecret"];
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("role");
options.Scope.Add("email");
options.Scope.Add("phone");
});
}