Activities of "mariovh"

  • ABP Framework version: v9.0.4
  • UI Type: Blazor WASM
  • Database System: EF Core (SQL Server)

Hi,

I'm having issues generating the static clients using the ABP CLI command.

I have the following AppService interface with its implementation, as well as a base AppService.

Base appservice and methods:

Here is the structure of the DTOs, filters:

This is what the CLI generates with the following command: abp generate-proxy -t csharp -u https://localhost:44393/ --without-contracts

Finally, I'm adding the app-generate-proxy.json file:

And HttpApi.Client references:

Thank you.

  • ABP Framework version: v9.0.1
  • UI Type: Blazor
  • Database System: EF Core (SQL Server)

We are experiencing issues with Blazor WASM initialization due to the loading of modules.

We considered using InteractiveAuto rendering to speed up the initial load of the login page when the user is not authenticated, but this is not an option since our component suite is designed to work with WASM.

We have explored alternatives, such as having two WASM projects referenced from the same Blazor WebApp project (Blazor, Blazor.Client, Blazor.Login), as demonstrated here: https://github.com/jirisykora83/WebAppMultiBlazor

We want to apply this same approach using ABP, with the idea that the additional Blazor.Login project would handle authentication. This project would only include authentication dependencies and the login page to streamline the initial entry into the application.

In other words, when the user is not authenticated, they should be redirected to the login page of the Blazor.Login project. If authenticated, they should be redirected to the Blazor.Client project, which contains all application dependencies and represents the main application.

Would this be possible with ABP? What logic would need to be overridden to achieve this approach?

Thank you very much!

  • ABP Framework version: v8.3.2
  • UI Type: Blazor WASM
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes

Hello,

I am experiencing severe startup delays in the WASM application once the WASM assemblies are loaded in the browser.

One of the options we are considering with my colleagues to improve the startup performance of the application after downloading the WASM file is to avoid generating proxies at runtime. Since reflection is costly in WebAssembly, this would save computation time and potentially eliminate the request to the api-definition endpoint, which also introduces a delay.

Would it be possible to generate these proxies at compile time instead?

In a Blazor solution, would this be complex or resource-intensive? Is there any command available in the ABP suite to achieve this?

What would be the recommended steps to follow to enable this feature?

Thank you for your support.

  • ABP Framework version: v8.3.2
  • UI Type: Blazor WASM
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes

Hello, I am trying to replace Serilog with ApplicationInsightsTelemetry in the Host project for the purpose of logging traces, exceptions and exception messages in azure application insights. Like this: `

    var applicationInsightsConnectionString = builder.Configuration["ApplicationInsights:ConnectionString"];
    if (!string.IsNullOrEmpty(applicationInsightsConnectionString))
    {
        builder.Services.AddApplicationInsightsTelemetry(options =>
        {
            options.ConnectionString = applicationInsightsConnectionString;
        });
    }
    else
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
            .Enrich.FromLogContext()
            WriteTo.Async(c =>
        c.File("App_Data/Logs/Logs.txt", rollingInterval: RollingInterval.Day, rollOnFileSizeLimit: true))
            #if DEBUG
            .WriteTo.Async(c => c.Console())
            #endif
            .CreateLogger();
        builder.Host.UseSerilog();
   }

`

The fact is that when a BusinessException occurs, another error is caused, the exception message is not translated on the screen and in insights you only see the following:

Exception of type 'Volo.Abp.BusinessException' was thrown.

Also a System.NotSupportedException is thrown after BusinessException because some SerilogMiddleware:

With this StackTrace:

System.NotSupportedException:
   at System.Text.Json.ThrowHelper.ThrowNotSupportedException (System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51)
   at System.Text.Json.Serialization.JsonConverter`1.WriteCore (System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<SerializeAsync>d__9.MoveNext (System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+&lt;SerializeAsync&gt;d__9.MoveNext (System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1+<SerializeAsync>d__9.MoveNext (System.Text.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter+<WriteResponseBodyAsync>d__5.MoveNext (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+<<InvokeResultAsync>g__Logged|22_0>d.MoveNext (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+<<InvokeAlwaysRunResultFilters>g__Awaited|27_0>d.MoveNext (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+<<InvokeNextResourceFilter>g__Awaited|25_0>d.MoveNext (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+<<InvokeFilterPipelineAsync>g__Awaited|20_0>d.MoveNext (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+<<InvokeAsync>g__Logged|17_1>d.MoveNext (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker+<<InvokeAsync>g__Logged|17_1>d.MoveNext (Microsoft.AspNetCore.Mvc.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware+<<Invoke>g__AwaitRequestTask|7_0>d.MoveNext (Microsoft.AspNetCore.Routing, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Volo.Abp.AspNetCore.Serilog.AbpSerilogMiddleware+<InvokeAsync>d__6.MoveNext (Volo.Abp.AspNetCore.Serilog, Version=8.3.2.0, Culture=neutral, PublicKeyToken=null)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions+InterfaceMiddlewareBinder+<>c__DisplayClass2_0+<<CreateMiddleware>b__0>d.MoveNext (Microsoft.AspNetCore.Http.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Volo.Abp.AspNetCore.Auditing.AbpAuditingMiddleware+<InvokeAsync>d__14.MoveNext (Volo.Abp.AspNetCore, Version=8.3.2.0, Culture=neutral, PublicKeyToken=null)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Volo.Abp.AspNetCore.Auditing.AbpAuditingMiddleware+<InvokeAsync>d__14.MoveNext (Volo.Abp.AspNetCore, Version=8.3.2.0, Culture=neutral, PublicKeyToken=null)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions+InterfaceMiddlewareBinder+<>c__DisplayClass2_0+<<CreateMiddleware>b__0>d.MoveNext (Microsoft.AspNetCore.Http.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware+<Invoke>d__11.MoveNext (Microsoft.AspNetCore.Authorization.Policy, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Volo.Abp.AspNetCore.Security.Claims.AbpDynamicClaimsMiddleware+<InvokeAsync>d__0.MoveNext (Volo.Abp.AspNetCore, Version=8.3.2.0, Culture=neutral, PublicKeyToken=null)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions+InterfaceMiddlewareBinder+<>c__DisplayClass2_0+<<CreateMiddleware>b__0>d.MoveNext (Microsoft.AspNetCore.Http.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Volo.Abp.AspNetCore.Uow.AbpUnitOfWorkMiddleware+<InvokeAsync>d__3.MoveNext (Volo.Abp.AspNetCore, Version=8.3.2.0, Culture=neutral, PublicKeyToken=null)
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)
   at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions+InterfaceMiddlewareBinder+<>c__DisplayClass2_0+<<CreateMiddleware>b__0>d.MoveNext 

Using Serilog an file logging:
2024-12-23 10:54:52.472 +00:00 [WRN] ---------- RemoteServiceErrorInfo ----------
{
  "code": "Errors:ClinicalTrials:ClinicalTrialIdentifierMustBeUnique",
  "message": "El campo 'Identificador debe ser único'.",
  "details": null,
  "data": {},
  "validationErrors": null
}

2024-12-23 10:54:52.472 +00:00 [WRN] Exception of type 'Volo.Abp.BusinessException' was thrown.
Volo.Abp.BusinessException: Exception of type 'Volo.Abp.BusinessException' was thrown.

What am I doing wrong regarding the Logging configuration? My goal is to activate telemetry in Azure Application Insights and be able to exploit errors in the same way as in the log file, seeing exceptions and error messages in Azure Application Insights.

Thank you and happy holidays

  • ABP Framework version: v8.1.3
  • UI Type: Blazor WASM
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes

Hi, I'm using Azure Distributed Event Bus with Inbox/Outbox patterns. One Pre-Requirement is Distributed Locking. Using Redis is working fine for us, but production costs in Azure are very high, due to the number of applications and environments we have, in which we would need a Azure Cache for Redis per application and environment. Is there an alternative or can a different solution be implemented to avoid using Redis?

Thank you.

  • ABP Framework version: v8.1.3
  • UI Type: Blazor WASM
  • Database System: EF Core (SQL Server)

Hi, I'm using AzureDistributedEventBus with Inbox/Outbox pattern and Hybrid Database Architecture, where some tenants share a single database while some tenants may have their own databases. I don't know how is the correct way to configure Entity Framework Module Inbox/Outbox patter with this Db architecture and how it works internally to avoid conficts and misconfiguration. Is 1 worker per database, 1 for database shared for all tenant, and 1 extra for each isolated tenant database? Or 1 worker per application? How is the correct way to implement this pattern with this database architecture?

Thank you

  • ABP Framework version: v8.1.3
  • UI Type: Blazor WASM
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes

Hello, I'm using AzureDistributedEventBus with inbox patter, for incoming Azure Service Bus Messages. While creating or updating an aggregate in a handler/synchronizer there's no entries created in audit tables AbpEntityChanges and AbpEntityPropertyChanges. How can I leave a trace in those tables when I insert or update the aggregate with a repository, taking into account that the change does not come from a request to the API but from a message received through Azure Service Bus?

Thank you

  • ABP Framework version: v8.1.3
  • UI Type: Blazor WASM
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes

Hi Im working with Distributed Entity Eventy Bus and there are some events auto generated like, UserEto,IdentityRoleEto,IdentityUserEmailChangedEto are configured to automatically publish the events. I want to disable all configured events that automatically publish events, in order to publish manually with AddDistributedEvent(). I tried with module configuration but it doesnt work Configure<AbpDistributedEntityEventOptions>(options => { options.AutoEventSelectors.Clear(); });

Thank you

ABP Framework version: v7.4.4 UI Type: Blazor WASM Database System: EF Core (SQL Server)

Hi, Im using Abp AzureDistributedEventBus, with outbox and inbox pattern, and i need to update IncomingEventInfo ExtraProperties when I MarkAsProcessedAsync. Here is my code:

internal async Task IncomingEventInfoMarkAsProcessed(IncomingEventInfo incomingEvent, InboxConfig inboxConfig)
{
    if (AbpDistributedEventBusOptions.Inboxes.Count <= 0)
    {
        return;
    }
    using var scope = ServiceScopeFactory.CreateScope();
    var eventInbox = (IEventInbox)scope.ServiceProvider.GetRequiredService(inboxConfig.ImplementationType);

    if (incomingEvent.MessageId.IsNullOrEmpty())
    {
        return;
    }

    if (!Guid.TryParse(incomingEvent.MessageId, out var messageId))
    {
        return;
    }

    if (!await eventInbox.ExistsByMessageIdAsync(incomingEvent.MessageId))
    {
        return;
    }
    incomingEvent.ExtraProperties.Add("ERROR COUNT", 1);
    // UPDATE DE EXTRA PROPERTIES
    await eventInbox.MarkAsProcessedAsync(messageId);
}
  • ABP Framework version: v7.4.4
  • UI Type: Blazor WASM
  • Database System: EF Core (SQL Server)

Hi, Im using distributed event bus with outbox pattern and Azure service bus provider. I have 3 requirements that I'm struggling to implement with AzureDistributedEventBus.

The first is the need to publish to different topics based on the event name of the Eto:

[EventName("projects")] public class ProjectEto

[EventName("campaigns")] public class CampaignEto

The second is whether there's a way to override part of the message publishing with AzureDistributedEventBus to achieve the following: With the default implementation of the outbox pattern, when publishing the message to Azure Service Bus, override the message publishing to choose which topic the message corresponds to. Additionally, be able to, if the topic or subscription don't exist, create them programmatically using ServiceBusAdministrationClient.CreateTopicAsync from Azure.Messaging.ServiceBus.Administration.

The last one, because is posible to use outbox pattern with no Sql database/context, so my last question is if i can configure the pattern to not delete the rows in AbpEventOutbox table after publishing on azure and mark as published instead of delete.

Thank you!

Showing 1 to 10 of 15 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.0.0-preview. Updated on June 23, 2025, 11:58