Activities of "mgurer"

  • Steps to reproduce the issue: Hello,

I noticed that Abp’s IRepository interface has been updated and now includes two new properties: EntityName and ProviderName.

In my project, I have the following base repository class:

public abstract class ReadOnlyBasicRepositoryBase<TEntity>() : IReadOnlyBasicRepository<TEntity>, IRepository, IServiceProviderAccessor, IUnitOfWorkEnabled where TEntity : class, IEntity { ... }

After the interface change, I had to add the following properties to my implementation:

public string EntityName { get; set; } public string ProviderName { get; }

However, I’m unsure at which point in the repository lifecycle these properties are expected to be initialized. Since I couldn’t find documentation related to this update, I’m not certain how or where these new fields should be populated.

Could you please provide some guidance on the purpose of these properties and how they should be initialized?

Thank you.

  • Exception message and full stack trace: Hello, i am getting so many support emails. Email ttile is "Reminder: Please select an answer for question #10132". I am getting emails on every 30 minutes. When I click the link in the content, i get 404. Can you please check the issue?
  • Steps to reproduce the issue:
  • Exception message and full stack trace: Hello, I am trying to upgrade my solution to 10.0.0. Volo.Abp.EntityFrameworkCore.PostgreSql package references to Npgsql.EntityFrameworkCore.PostgreSQL version 10.0.0-rc1. This leads to build warnings. I guess your internal package references needs to be updated.
  • Steps to reproduce the issue:

Hello,

I'm working with the ABP Framework using the Blazor UI and microservice template with PostgreSQL. After making some modifications to the default startup templates, I've encountered an issue with user claims access.

Problem Description:

I have successfully inserted custom claims into the AbpUserClaims table. These claims are accessible and readable from the API projects. However, the Blazor UI project cannot access these database-stored claims. I have disabled the DynamicClaims feature in my project. Analysis: I suspect the Blazor UI project lacks direct access to the Identity database, which prevents it from retrieving the stored claims.

Current Workaround: I've created a dedicated API service method that returns the claims values to the UI project, which works but feels like a temporary solution.

Question: Is there a more integrated or "natural" approach within the ABP Framework to resolve this claims access issue between the Blazor UI and the Identity database?

Any guidance or suggestions would be greatly appreciated.

Best regards, Murat

Hello, I have created a custom data annotition attribute. Below is the code;

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,
    AllowMultiple = false)]
public class PspRequiredAttribute : RequiredAttribute
{
    public PspRequiredAttribute()
    {
        ErrorMessageResourceName = nameof(PspResource.RequiredAttribute_ValidationError);
        ErrorMessageResourceType = typeof(PspResource);
    }
}

Here is a sample create dto for testing;

public class ProductCreateDto
{
    [PspRequired]
    [PspStringLength(ProductConsts.NameMaxLength)]
    [Display(Name = "Product_Name", ResourceType = typeof(ProductServiceResource))]
    public string Name { get; set; }
}

On blazor pages, after applying new PspRequired attribute, blazor forms automatically gets localized for validation messages. Otherwise, using classic Required attribute, blazor ui localizations fails, and only english localizations are shown for models ui validation messages.

But when I send this dto to create method of service, I get an error of this type: System.InvalidOperationException, System.Private.CoreLib, Version=9.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e

When I use standard Required attribute, no error occcurs.

I placed breakpoints on conrollers create action but no breakpoint hits but error is returned. I can not figure out what is going on because no breakpoint hits.

How can I use my own anotation attributes as in the example.

Tnx Murat

  • ABP Framework version: v9.0.0
  • UI Type: Blazor Server
  • Database System: EF Core (PostgreSQL, etc..)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes/no
  • Exception message and full stack trace:
  • Steps to reproduce the issue:

Hello.

I have just updated my code base to use couchbase as distributed cache and lock provider.

Everything goes fine.

During my tests, I have noticed a behavior about distributed locks for BackgroundJobWorker.

The class implementation uses constant "AbpBackgroundJobWorker" string as lock key.

I have maybe 50 microservices and each microservice has their own database and each database has own "AbpBackgroundJobs" table.

Each microservice runs this BackgroundJobWorker periodically (a bit often) and on every call the lock is activated using same lock key ("AbpBackgroundJobWorker"). I use Volo.Abp.BackgroundJobs.EntityFrameworkCore library to store job queue on database.

Since microservices has their own separate databases, blocking microservices with same lock-key seems to me a little bit inefficient. This blockage goes up depending on the number of microservices.

I suggest appending the database name as a suffix to the lock key or add an option to set this key separately for each microservice so that microservices do not block each other.

I would like to alter this implementation according to my suggestion, but I like to ensure that I do not miss any logic that made you use same lock-key.

Do you have any comment about this issue?

Thanks. Murat

  • ABP Framework version: v8.3.1
  • UI Type: Blazor Server
  • Database System: EF Core (PostgreSQL, etc..)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes/
  • Exception message and full stack trace:
  • Steps to reproduce the issue:

Hello

I am experiencing a strange behaviour when using abp generate-proxy cli command.

Below there is a few lines of codes;

//towns service contract public interface ITownsAppService : ICrudAppService<TownDto, Guid, GetTownsInput, TownCreateDto, TownUpdateDto>, ILookupService { }

//my lookup service interface public interface ILookupService { Task<PagedResultDto<LookupDto<Guid>>> GetListAsLookupAsync(LookupRequestDto input); }

//towns service implementation public class TownsAppService : CrudAppService<Town, TownDto, Guid, GetTownsInput, TownCreateDto, TownUpdateDto>, ITownsAppService {...}

//towns service controller [RemoteService(Name = MasterServiceRemoteServiceConsts.RemoteServiceName)] [Area("master-service")] [ControllerName("Town API")] [ApiVersion("1.0")] [Route("api/master-service/towns")] public class TownController : AbpController, ITownsAppService {...}

when i run the following command; abp generate-proxy -t csharp -u https://localhost:xxx/ -m master-service --without-contracts

Proxy codes are generated for ILookupsService not for ITownsAppService, as you can see my controller and my service implemtation inherits ITownsAppService directly and ILookupService indirectly.

[Dependency(ReplaceServices = true)] [ExposeServices(typeof(ILookupService), typeof(TownClientProxy))] public partial class TownClientProxy : ClientProxyBase<ILookupService>, ILookupService

So when i try to access ITownsAppService, i got interface not implemented error as you can figure out.

If I rename ILookupService to ILookupAdaptor, proxy generation skips to generate proxy files for towns. No output created.

Is there a way to fix this issue?

Murat Gürer

  • ABP Framework version: v8.3.0
  • UI Type: Blazor Server
  • Database System: EF Core (PostgreSQL)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes/no
  • Exception message and full stack trace:
  • Steps to reproduce the issue:

Hello.

When I use the token endpoint to get auth token using specific client with client_credentials grant_type, the related OpenIddictApplication entity gets updated. When I check the db, I see changes only in concurrencystamp and lastmodificationtime columns. All other columns remains unchanged. Every time I use token endpoint, an update for the application record gets sent to db.

In my application there are too many clients (more than thounsands) trying to get auth token for their apps and some users fall into concurreny exceptions because they try to get token at almost same time. Because there is no meaningful data change in the applicaiton record(only lastmodiftime), I want to prevent this table to get updated during token requests.

Do you have any suggestions for that?

Thanks. Murat

  • ABP Framework version: v8.2+
  • UI Type: Angular / MVC / Blazor WASM / Blazor Server
  • Database System: EF Core (SQL Server, Oracle, MySQL, PostgreSQL, etc..) / MongoDB
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes/no
  • Exception message and full stack trace:
  • Steps to reproduce the issue:

I have just intalled new abp cli using the command below;

dotnet tool install -g Volo.Abp.Studio.Cli

Now I get following error when I type abp in command window.

abp --version [08:33:46 INF] ABP CLI 0.7.4 (Beta) [08:33:46 INF] You are running the second generation of the ABP CLI. If you're interested in the legacy CLI, see https://abp.io/new-cli NuGet.Protocol.Core.Types.FatalProtocolException: Failed to retrieve information about 'Volo.Abp.Studio.Cli' from remote source 'https://nuget.telerik.com/v3/package/volo.abp.studio.cli/index.json'. System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized). at HttpResponseMessage System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at void NuGet.Protocol.HttpSource.<>c__DisplayClass15_01.<<GetAsync>b__0>d.MoveNext() at async Task<T> NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync<T>(string filePath, Func<CancellationToken, Task<T>> action, CancellationToken token) at async Task<T> NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync<T>(string filePath, Func<CancellationToken, Task<T>> action, CancellationToken token) at async Task<T> NuGet.Protocol.HttpSource.GetAsync<T>(HttpSourceCachedRequest request, Func<HttpSourceResult, Task<T>> processAsync, ILogger log, CancellationToken token) at async Task<SortedDictionary<NuGetVersion, PackageInfo>> NuGet.Protocol.HttpFileSystemBasedFindPackageByIdResource.FindPackagesByIdAsync(string id, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) at async Task<SortedDictionary<NuGetVersion, PackageInfo>> NuGet.Protocol.HttpFileSystemBasedFindPackageByIdResource. FindPackagesByIdAsync(string id, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) at async Task<SortedDictionary<NuGetVersion, PackageInfo>> NuGet.Protocol.HttpFileSystemBasedFindPackageByIdResource. EnsurePackagesAsync(string id, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken ) at async Task<IEnumerable<NuGetVersion>> NuGet.Protocol.HttpFileSystemBasedFindPackageByIdResource.GetAllVersionsAsync (string id, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) at async Task<SortedSet<NuGetVersion>> Volo.Abp.Studio.Nuget.NugetPackageManager.FindVersionsAsync(string packageId, bool includeNightly) at async Task<NuGetVersion> Volo.Abp.Studio.Nuget.NugetPackageManager.FindLatestVersionAsync(string packageId, bool includeNightly, bool includeReleaseCandidates) at async Task<NuGetVersion> Volo.Abp.Studio.Nuget.NugetPackageManager.GetLatestVersionAsync(string packageId, bool includeNightly, bool includeReleaseCandidates) at async Task Volo.Abp.Studio.Cli.StudioCliService.CheckCliVersionAsync(CommandLineArgs commandLineArgs, SemanticVersion currentCliVersion) at async Task Volo.Abp.Studio.Cli.StudioCliService.RunAsync(string[] args) Unhandled exception. NuGet.Protocol.Core.Types.FatalProtocolException: Failed to retrieve information about 'Volo.Abp.Studio.Cli' from remote source 'https://nuget.telerik.com/v3/package/volo.abp.studio.cli/index.json'. ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized). at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at NuGet.Protocol.HttpSource.<>c__DisplayClass15_01.<<GetAsync>b__0>d.MoveNext() --- End of stack trace from previous location --- at NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync[T](String filePath, Func2 action, CancellationToken token) at NuGet.Common.ConcurrencyUtilities.ExecuteWithFileLockedAsync[T](String filePath, Func2 action, CancellationToken token) at NuGet.Protocol.HttpSource.GetAsync[T](HttpSourceCachedRequest request, Func`2 processAsync, ILogger log, CancellationToken token) at NuGet.Protocol.HttpFileSystemBasedFindPackageByIdResource.FindPackagesByIdAsync(String id, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) --- End of inner exception stack trace --- at NuGet.Protocol.HttpFileSystemBasedFindPackageByIdResource.FindPackagesByIdAsync(String id, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) at NuGet.Protocol.HttpFileSystemBasedFindPackageByIdResource.EnsurePackagesAsync(String id, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) at NuGet.Protocol.HttpFileSystemBasedFindPackageByIdResource.GetAllVersionsAsync(String id, SourceCacheContext cacheContext, ILogger logger, CancellationToken cancellationToken) at Volo.Abp.Studio.Nuget.NugetPackageManager.FindVersionsAsync(String packageId, Boolean includeNightly) at Volo.Abp.Studio.Nuget.NugetPackageManager.FindLatestVersionAsync(String packageId, Boolean includeNightly, Boolean includeReleaseCandidates) at Volo.Abp.Studio.Nuget.NugetPackageManager.GetLatestVersionAsync(String packageId, Boolean includeNightly, Boolean includeReleaseCandidates) at Volo.Abp.Studio.Cli.StudioCliService.CheckCliVersionAsync(CommandLineArgs commandLineArgs, SemanticVersion currentCliVersion) at Volo.Abp.Studio.Cli.StudioCliService.RunAsync(String[] args) at Volo.Abp.Studio.Cli.Program.RtRr72CxI(Object ) at Volo.Abp.Studio.Cli.Program.

(String[] args)

When I visit https://nuget.telerik.com/v3/package/volo.abp.studio.cli/index.json address, I am being asked for a basic authentication user.

Where the heck the telerik came from?

Can you advise me asap?

Question
  • ABP Framework version: v8.2.0
  • UI Type: Blazor WASM
  • Database System: EF Core (PostgreSQL)
  • Tiered (for MVC) or Auth Server Separated (for Angular): yes
  • Exception message and full stack trace:
  • Steps to reproduce the issue:

Hello,

I have just upgraded my v8.02 solution to v8.2.0

I exprerience a strange problem on all versions after v8.0.2. The versions below also does not produce such problem.

When I try to complete a unitofwork by call completeasync() method, the methods falls into a loop and never returns. In each loop LocalEvents collection gets filled with one item although collection is cleared in previous loop.

When I checked the unitofwork source code and commented out the second call to SaveChangesAsync method, everything seems to work fine. I know this change has serious drawbacks, but I could not figure out another solution.

Below is the code (abp's unitofwork.cs) that I altered;

public virtual async Task CompleteAsync(CancellationToken cancellationToken = default)
{
    if (_isRolledback)
    {
        return;
    }

    PreventMultipleComplete();

    try
    {
        _isCompleting = true;
        await SaveChangesAsync(cancellationToken);

        while (LocalEvents.Count != 0 || DistributedEvents.Count != 0)
        {
            if (LocalEvents.Count != 0)
            {
                var localEventsToBePublished = LocalEvents.OrderBy(e => e.EventOrder).ToArray();
                LocalEvents.Clear();
                await UnitOfWorkEventPublisher.PublishLocalEventsAsync(
                    localEventsToBePublished
                );
            }

            if (DistributedEvents.Count != 0)
            {
                var distributedEventsToBePublished = DistributedEvents.OrderBy(e => e.EventOrder).ToArray();
                DistributedEvents.Clear();
                await UnitOfWorkEventPublisher.PublishDistributedEventsAsync(
                    distributedEventsToBePublished
                );
            }

            //This is the place where I commented out.
            //await SaveChangesAsync(cancellationToken);
        }

        await CommitTransactionsAsync(cancellationToken);
        IsCompleted = true;
        await OnCompletedAsync();
    }
    catch (Exception ex)
    {
        _exception = ex;
        throw;
    }
}

Here is the test service method that I used to trigger the problem during my debug session;

[AllowAnonymous]
    [UnitOfWork(IsDisabled = true)]
public async Task<string> TestAsync(Guid id)
{
    try
    {
        var message = await _messageRepository.FindAsync(id);

        if (message == null)
            return "null";

        message.SetTitle(message.Title + "!");

        await _messageRepository.UpdateAsync(message, true);

        return message.Title;
    }
    catch (Exception e)
    {
        return e.Message + " -- " + e.InnerException?.Message;
    }
}

During my test above, data gets updated in db but the method never returns back to caller. I even tested by creating a new unitofwork instance using unitofworkmanager and manually triggering the completeasync method as described in your unitofwork documentation.

Can you advice me a solution for my problem?

Thanks Murat

Showing 1 to 10 of 25 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.1.0-preview. Updated on December 05, 2025, 12:34
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.