Activities of "Jesse.Thomas@condoauthorityontario.ca"

Hi,

Please see code below:

public class EmailDefinitionTemplateProvider : TemplateDefinitionProvider
{
    public const string SubjectPropertyName = "Subject";
    public const string DescriptionPropertyName = "Description";
    private const string DefaultEmailLayout = "EmailLayout";
    public const string NotesPropertyName = "Notes";


    public override void Define(ITemplateDefinitionContext context)
    {
        if (context != null)
        {
            context.Add(
                new TemplateDefinition(
                    DefaultEmailLayout,
                    isLayout: true
                ).WithVirtualFilePath(
                    $"/Emailing/Templates/{DefaultEmailLayout}.tpl", //template content path
                    isInlineLocalized: true
                ).WithScribanEngine()
            );

            foreach (var emailCode in Enum.GetValues(typeof(EmailCode)))
            {
                context.Add(
                    new TemplateDefinition(
                            name: emailCode.ToString(),
                            defaultCultureName: CatOsConsts.CultureNameEn,
                            layout: DefaultEmailLayout //Set the LAYOUT
                        ).WithScribanEngine()
                        .WithVirtualFilePath(
                            $"/Emailing/Templates/{emailCode}", //template content folder
                            isInlineLocalized: false
                        )
                        .WithProperty(SubjectPropertyName, L($"MailType:{emailCode}:MailSubject"))
                        .WithProperty(DescriptionPropertyName, L($"MailType:{emailCode}:MailDescription"))
                        .WithProperty(NotesPropertyName, L($"MailType:DEFAULT:MailNote")) 
                );
            }
        }
    }

    private static LocalizableString L(string name)
    {
        return LocalizableString.Create<EmailResource>(name);
    }

In the code above we are using the ABP implementation for Template management. The solution works fine locally (in Visual Studio), however after deployment to Azure App Service, we are getting the following error:

Error Message: Could not find a file/folder at the location: /Emailing/Templates/CAT_INV_W

We have traced it back to this line of code above:

         ).WithVirtualFilePath(
                        $"/Emailing/Templates/{DefaultEmailLayout}.tpl", //template content path

It appears the virtual file path is not working on Azure, and we are not sure how to fix it. Can you please let us know if there is something we need to configure to allow Virtual File Paths to work with the ABP Framework on Azure?

If you can guide us to the right documentation or help us resolve this issue that would be greatly appreciated.

Thanks,

Jesse

ABP Framework version: v4.4.2 UI type: Blazor Server DB provider: EF Core Tiered (MVC) or Identity Server Separated (Angular): no Exception message and stack trace:

Error Message: Could not find a file/folder at the location: /Emailing/Templates/CAT_INV_W

Stack trace:
Volo.Abp.AbpException:
at Volo.Abp.TextTemplating.VirtualFiles.LocalizedTemplateContentReaderFactory+<CreateInternalAsync>d__9.MoveNext (Volo.Abp.TextTemplating.Core, Version=4.4.3.0, Culture=neutral, PublicKeyToken=null)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter.GetResult (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Volo.Abp.TextTemplating.VirtualFiles.LocalizedTemplateContentReaderFactory+&lt;CreateAsync&gt;d__8.MoveNext (Volo.Abp.TextTemplating.Core, Version=4.4.3.0, Culture=neutral, PublicKeyToken=null)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter.GetResult (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Volo.Abp.TextTemplating.VirtualFiles.VirtualFileTemplateContentContributor+<GetOrNullAsync>d__3.MoveNext (Volo.Abp.TextTemplating.Core, Version=4.4.3.0, Culture=neutral, PublicKeyToken=null)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Volo.Abp.TextTemplating.TemplateContentProvider+<GetContentOrNullAsync>d__11.MoveNext (Volo.Abp.TextTemplating.Core, Version=4.4.3.0, Culture=neutral, PublicKeyToken=null)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter.GetResult (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Volo.Abp.TextTemplating.TemplateContentProvider+&lt;GetContentOrNullAsync&gt;d__9.MoveNext (Volo.Abp.TextTemplating.Core, Version=4.4.3.0, Culture=neutral, PublicKeyToken=null)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter.GetResult (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Volo.Abp.TextTemplateManagement.TextTemplates.TemplateContentAppService+<GetAsync>d__5.MoveNext (Volo.Abp.TextTemplateManagement.Application, Version=4.4.2.0, Culture=neutral, PublicKeyToken=null)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Castle.DynamicProxy.AsyncInterceptorBase+<ProceedAsynchronous>d__14`1.MoveNext (Castle.Core.AsyncInterceptor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e33b67d3bb5581e4)
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue`1+<ProceedAsync>d__7.MoveNext (Volo.Abp.Castle.Core, Version=4.4.2.0, Culture=neutral, PublicKeyToken=null)

Hi Maliming,

I have sent you a sample project with source code, showing the exception. Please let me know if you need anything else.

Thanks,

Jesse

Hi,

I am trying to call a service in the Volo Language management module via a background process. When I attempt to do this I get 'Volo.Abp.Authorization.AbpAuthorizationException' error.

It appears I can not call the service using the background process , although I am logged in as Admin User. When I call the service directly from the page, I have no issues. I have already checked the documentation and tried what was suggested in hte folllowing link : https://github.com/abpframework/abp/issues/2631 - Adding the [AllowAnonymous] attribute has not worked.

Any suggestions would be much appreciated. Please see stack trace below.

Thanks,

Jesse

  • ABP Framework version: v4.4.2
  • UI type: Blazor Server
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace:
[17:54:57 WRN] Code:Volo.Authorization:010001
[17:54:58 WRN] Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
Volo.Abp.Authorization.AbpAuthorizationException: Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
   at Microsoft.AspNetCore.Authorization.AbpAuthorizationServiceExtensions.CheckAsync(IAuthorizationService authorizationService, AuthorizationPolicy policy)
   at Volo.Abp.Authorization.MethodInvocationAuthorizationService.CheckAsync(MethodInvocationAuthorizationContext context)
   at Volo.Abp.Authorization.AuthorizationInterceptor.AuthorizeAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Authorization.AuthorizationInterceptor.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.GlobalFeatures.GlobalFeatureInterceptor.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.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope)
   at Volo.Abp.Auditing.AuditingInterceptor.ProcessWithNewAuditingScopeAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, ICurrentUser currentUser, IAuditingManager auditingManager, IAuditingHelper auditingHelper)
   at Volo.Abp.Auditing.AuditingInterceptor.ProcessWithNewAuditingScopeAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, ICurrentUser currentUser, IAuditingManager auditingManager, IAuditingHelper auditingHelper)
   at Volo.Abp.Auditing.AuditingInterceptor.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.Features.FeatureInterceptor.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 Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
   at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Cao.CatOs.Blazor.Admin.Multilingual.UpdateImportFileJob.ExecuteAsync(UpdateImportFileArgs args) in C:\CAT-OS\src\Cao.CatOs.Blazor\Admin\Multilingual\UpdateImportFileJob.cs:line 26
   at Volo.Abp.BackgroundJobs.BackgroundJobExecuter.ExecuteAsync(JobExecutionContext context)
[17:54:58 WRN] Code:Volo.Authorization:010001
[17:54:59 INF] HTTP GET / responded 200 in 30787.3336 ms
[17:54:59 WRN] Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
Volo.Abp.Authorization.AbpAuthorizationException: Exception of type 'Volo.Abp.Authorization.AbpAuthorizationException' was thrown.
   at Microsoft.AspNetCore.Authorization.AbpAuthorizationServiceExtensions.CheckAsync(IAuthorizationService authorizationService, AuthorizationPolicy policy)
   at Volo.Abp.Authorization.MethodInvocationAuthorizationService.CheckAsync(MethodInvocationAuthorizationContext context)
   at Volo.Abp.Authorization.AuthorizationInterceptor.AuthorizeAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Authorization.AuthorizationInterceptor.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.GlobalFeatures.GlobalFeatureInterceptor.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.Auditing.AuditingInterceptor.ProceedByLoggingAsync(IAbpMethodInvocation invocation, IAuditingHelper auditingHelper, IAuditLogScope auditLogScope)
   at Volo.Abp.Auditing.AuditingInterceptor.ProcessWithNewAuditingScopeAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, ICurrentUser currentUser, IAuditingManager auditingManager, IAuditingHelper auditingHelper)
   at Volo.Abp.Auditing.AuditingInterceptor.ProcessWithNewAuditingScopeAsync(IAbpMethodInvocation invocation, AbpAuditingOptions options, ICurrentUser currentUser, IAuditingManager auditingManager, IAuditingHelper auditingHelper)
   at Volo.Abp.Auditing.AuditingInterceptor.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.Features.FeatureInterceptor.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 Castle.DynamicProxy.AsyncInterceptorBase.ProceedAsynchronous(IInvocation invocation, IInvocationProceedInfo proceedInfo)
   at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.ProceedAsync()
   at Volo.Abp.Uow.UnitOfWorkInterceptor.InterceptAsync(IAbpMethodInvocation invocation)
   at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter`1.InterceptAsync(IInvocation invocation, IInvocationProceedInfo proceedInfo, Func`3 proceed)
   at Cao.CatOs.Blazor.Admin.Multilingual.UpdateImportFileJob.ExecuteAsync(UpdateImportFileArgs args) in C:\CAT-OS\src\Cao.CatOs.Blazor\Admin\Multilingual\UpdateImportFileJob.cs:line 26
   at Volo.Abp.BackgroundJobs.BackgroundJobExecuter.ExecuteAsync(JobExecutionContext context)
[17:54:59 WRN] Code:Volo.Authorization:010001
[17:55:00 INF] HTTP POST /_blazor/negotiate?negotiateVersion=1 responded 200 in 11.8430 ms
[17:55:01 INF] HTTP GET /api/account/profile-picture-file/e3681333-e8f4-d343-bf26-39ff027eeb17 responded 200 in 829.9652 ms

Thanks Maliming.....I figured the issue out, and something wasn't being injected properly. It had nothing to do with ABP code.....

Thanks for your help.

Jesse

Hi Albert, yes Maliming was able to answer the question posed in the that support request along with this issue I am experiencing with this support request.

The ticket can be closed.

Thanks,

Jesse

Thanks Maliming! This helped alot, and fixed my issues....

Jesse

Hi,

We are trying to implement a User tracking system inside our application. Basically we want to know who is logged on currently in the site. We have been investigating several ways to do this, and we were going to implement something like the following:

public interface IActiveUserRepository
{
    Task AddUserAysnc(UserCircuit user);
    Task<IList<UserCircuit>> GetUsers();
}

public class InMemoryActiveUserRepository : IActiveUserRepository
{
    private readonly Dictionary<string, UserCircuit> _activeUsers = new();

    public Task AddUserAysnc(UserCircuit user)
    {
        if (!_activeUsers.ContainsKey(user.UserId))
            _activeUsers.Add(user.UserId, user);

        return Task.CompletedTask;
    }

    public async Task<IList<UserCircuit>> GetUsers()
    {
        return await Task.Run(() => _activeUsers.Values.ToList());
    }
}

public class CustomAuthStateProvider : AuthenticationStateProvider
{
    private readonly IActiveUserRepository _users;

    public CustomAuthStateProvider(IActiveUserRepository users)
    {
        _users = users;
        AuthenticationStateChanged += OnAuthenticationStateChanged;
    }

    private async void OnAuthenticationStateChanged(Task<AuthenticationState> task)
    {
        var user = (await task).User;
        if (user.Identity.IsAuthenticated)
        {
            await _users.AddUserAysnc(new UserCircuit { UserId = user.Identity.Name });
        }
    }

    public override Task<AuthenticationState> GetAuthenticationStateAsync()
    {
        throw new System.NotImplementedException();
    }
}

//public class TrackingCircuitHandler : CircuitHandler
//{
//    private readonly HashSet<Circuit> circuits = new();

//    public override Task OnConnectionUpAsync(Circuit circuit,
//        CancellationToken cancellationToken)
//    {
//        circuits.Add(circuit);

//        return Task.CompletedTask;
//    }

//    public override Task OnConnectionDownAsync(Circuit circuit,
//        CancellationToken cancellationToken)
//    {
//        circuits.Remove(circuit);

//        return Task.CompletedTask;
//    }

//    public int ConnectedCircuits => circuits.Count;

//    public IList<Circuit> ActiveCircuits => circuits.ToList();
//}

public class UserCircuit
{
    public string CircuitId { get; set; }
    public string UserId { get; set; }
    public string Username { get; set; } = "Anonymous";
}

The question I have is , how do I access the AuthenticationStateProvider in ABP Framework? When I try to add the AuthenticationStateProvider via Dependecey Injection, I get an error since it already exists in the container.

Is there something out-of-box implemented by the ABP framework, that I can user to get all currently logged in users of the site? If not how is AuthenticationStateProvider implemented / exposed in the ABP framework?

Any help would be greatly appreciated.

Thanks,

Jesse

  • ABP Framework version: v4.4.2
  • UI type: Blazor Server
  • DB provider: EF Core

Thanks Maliming.... I am going to send you a test project shortly with details on what exactly is failing.

Thank you very much Ensin!

Jesse

Hi Albert,

The ABP Commercial version we are using is Version="4.4.2"

Please let me know if there is anything else you need.

Thanks,

Jesse

Showing 1 to 10 of 25 entries
Made with ❤️ on ABP v9.1.0-preview. Updated on November 11, 2024, 11:11