Hi, thanks for the reply. We did not have the "Send confirmation mail" checkbox:
After trying different settings we now understand that "Require confirmed email" in Administration/Settings/Identity Management is required to be checked for this feature to be enabled at all, maybe this could be clarified some way, we may do a pull request on this. Thanks again!
While we are working on this, could you please answer what emailing features we can expect work out of the box from the identity module beside the forgot password link email? For instance, should the new user get a "confirm email" on created if we dont check the "Email confirmed" box?
Hi, adding typeof(SaasHostApplicationModule) to the ApplicationModule solved the issue, we now see it probably was mistakenly deleted in the process of reverting to the nuget package. Thanks!
Check the docs before asking a question: https://abp.io/docs/latest
Check the samples to see the basic tasks: https://abp.io/docs/latest/samples
The exact solution to your question may have been answered before, and please first use the search on the homepage.
Provide us with the following info:
🧐 Hint: If you are using the ABP Studio, you can see all the information about your solution from the configuration window, which opens when you right-click on the solution and click on the Solution Configuration
button.
We are using ABP Commercial with Blazor Server and recently attempted to switch from the NuGet-based SaaS module (Volo.Saas
) to the full source code version. However, we decided to revert back to the SaaS package reference.
After completing the migration back to Volo.Saas
, we ensured all csproj
and Module.cs
files were correctly updated, and the solution builds without errors. The only difference in the Saas packages is that we were at Abp 8.0.2 when doing the initial switch to source code, now we are at 8.0.3. However, when logging into the host page, we get the following runtime error:
[2025-02-06T09:12:22.398Z] Error: System.InvalidOperationException: Cannot provide a value for property 'TenantAppService' on type 'Volo.Saas.Host.Blazor.Pages.Shared.Components.SaasLatestTenantsWidget.SaasLatestTenantsWidgetComponent'. There is no registered service of type 'Volo.Saas.Host.ITenantAppService'. at Microsoft.AspNetCore.Components.ComponentFactory.<>c__DisplayClass9_0.<CreatePropertyInjector>g__Initialize|1(IServiceProvider serviceProvider, IComponent component) at Microsoft.AspNetCore.Components.ComponentFactory.InstantiateComponent(IServiceProvider serviceProvider, Type componentType, IComponentRenderMode callerSpecifiedRenderMode, Nullable`1 parentComponentId) at Microsoft.AspNetCore.Components.RenderTree.Renderer.InstantiateChildComponentOnFrame(RenderTreeFrame[] frames, Int32 frameIndex, Int32 parentComponentId)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewComponentFrame(DiffContext& diffContext, Int32 frameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InitializeNewSubtree(DiffContext& diffContext, Int32 frameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext, Int32 newFrameIndex)
at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange`1 oldTree, ArrayRange`1 newTree) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException) at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
Despite reverting to Volo.Saas
, ITenantAppService
is not being registered, causing an injection failure in Blazor components. Removing the widget lets us try navigate to the Editions section and there the we get this error:
System.InvalidOperationException: Cannot provide a value for property 'AppService' on type 'Volo.Saas.Host.Blazor.Pages.Saas.Host.EditionManagement'. There is no registered service of type 'Volo.Saas.Host.IEditionAppService'.
Could you clarify why ITenantAppService
and IEditionAppService
is not available after switching back to the SaaS package reference?
Are there additional dependencies we may have missed?
Do we need to manually reset or reconfigure something?
Is this a known issue when reverting from source code to package reference?
Any help or guidance on how to resolve this issue would be greatly appreciated. Thanks!
Hi, I have tried to reproduce the error as well, without success. I will continue to try to find the issue why this is happening in our specific project, I will get back to you regarding this if there are any progress. Thanks for your help!
Hi, Without Mailkit installed, no. With MailKit installed, yes.
ABP Framework version: v9.0.2
UI Type: Blazor Server
Database System: EF Core (SQL Server)
Tiered (for MVC) or Auth Server Separated (for Angular): no
Exception message and full stack trace:
Steps to reproduce the issue:
Create a new Abp solution with blazor server with multitenancy with working db connection + run dbmigrator
Comment out to not use the nullemailsender in debug mode
Install Mailkit in the Domain module (Since we get a warning if we try to send a test email without it)
Set up valid email credentials(sendgrid in our case) and send a test mail to email address X which is sent and recieved ok
Create a new user with the email X
Log out and try to use the forgot password function with the new users email, according to the UI an email is sent
No email is recieved in the user email X
Do we need to take any extra/other steps for the forgot password function to work since the test email is working fine?
Also, according to the Account Pro docs the module implements email confirmation. We have not gotten this to work either, no confirmation email is sent to the new user(With and without email confirmed box checked). Do we need to implement this ourselves? This also applies to when we register a new tenant, no confirmation email is sent to the admin email address. So if you could explain what we can expect to work out of the box when creating a abp project and what we need to implement ourselves regarding this that would be appriciated! Thanks!
Hello, The temporary solution you suggested seems to work, thanks for your help!
Ok, thank you, let us know about the progress when possible, our project progress is on hold while we cant solve this.
Thanks again
Hi,
Thank you for your suggestions. We have tried both configurations you provided:
Using PreConfigure<ISignalRServerBuilder>
:
PreConfigure<ISignalRServerBuilder>(builder =>
{
builder.AddAzureSignalR(options =>
{
options.ConnectionString = context.Services.GetConfiguration().GetConnectionString("AzureSignalR");
options.ServerStickyMode = Microsoft.Azure.SignalR.ServerStickyMode.Required;
});
});
Using context.Services.AddSignalR
with filters:
context.Services.AddSignalR(options =>
{
options.DisableImplicitFromServicesParameters = true;
options.AddFilter<AbpHubContextAccessorHubFilter>();
options.AddFilter<AbpAuthenticationHubFilter>();
options.AddFilter<AbpAuditHubFilter>();
}).AddAzureSignalR(options =>
{
options.ConnectionString = context.Services.GetConfiguration().GetConnectionString("AzureSignalR");
options.ServerStickyMode = Microsoft.Azure.SignalR.ServerStickyMode.Required;
});
Unfortunately, neither of these resolved the issue of HttpContext
being null
when Azure SignalR is configured.
We have found two related issues with Azure SignalR disrupting the httpcontext:
Since Abp is relying on httpcontext in the BlazorServerLookupApiRequestService we either need an alternate solution to setting the headers or possibly a way to configure azure signalr so that we still have access to the httpcontext if that still is the issue.
Thank you for your assistance