Open Closed

getting issue while adding new controller for a new entity Repository #7523


User avatar
0
Vilasini created
  • ABP Framework version: 7.0
  • UI Type: MVC Razor pages
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): no
  • Exception message and full stack trace:
  • { "error": { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": { "ActivatorChain": "Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.TenantPolicyAppService" }, "validationErrors": null } }
  • Steps to reproduce the issue:
  • added a new controller in Identity module when i'm trying to test getting this issue help me out
  • PFB controller created
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Identity.AuthPolicy;

namespace Volo.Abp.Identity
{
    [RemoteService(Name = IdentityProRemoteServiceConsts.RemoteServiceName)]
    [Area(IdentityProRemoteServiceConsts.ModuleName)]
    [ControllerName("AuthenticationPolicies")]
    [Route("api/identity/authentication-policies")]
    public class IdentityAuthenticationPoliciesController: AbpControllerBase
    {
        private readonly ITenantPolicyAppService _tenantPolicyAppService;
        private readonly IAuthenticationPolicyAppService _authenticationPolicyAppService;
        public IdentityAuthenticationPoliciesController(ITenantPolicyAppService tenantPolicyAppService, 
            IAuthenticationPolicyAppService authenticationPolicyAppService)
        {
            _tenantPolicyAppService = tenantPolicyAppService;
            _authenticationPolicyAppService = authenticationPolicyAppService;
        }

        [HttpGet]
        [Route("authentication-policies-list")]
        public virtual Task<PagedResultDto<AuthPolicyResponseDto>> GetAllAuthenticationPoliciesListAsync(GetAllRequestDto input)
        {
            return _authenticationPolicyAppService.GetAllAuthenticationPoliciesListAsync(input);
        }
    }
}
Markdown supported.
Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)

14 Answer(s)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Please share full error logs and code of TenantPolicyAppService and AuthenticationPolicyAppService

    Thanks.

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    Vilasini created

    Hi,

    Here i am providing the code and error log

    Code: IAuthenticationPolicyAppService interface :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Volo.Abp.Application.Dtos;
    using Volo.Abp.Application.Services;
    
    namespace Volo.Abp.Identity.AuthPolicy
    {
        public interface IAuthenticationPolicyAppService : IApplicationService
        {
            Task<PagedResultDto<AuthPolicyResponseDto>> GetAllAuthenticationPoliciesListAsync(GetAllRequestDto input);
        }
    }
    
    AuthenticationPolicyAppService class :
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Volo.Abp.Application.Dtos;
    using Volo.Abp.Application.Services;
    using Volo.Abp.Domain.Repositories;
    using System.Linq.Dynamic.Core;
    
    
    namespace Volo.Abp.Identity.AuthPolicy
    {
        //[Authorize(IdentityPermissions.AuthenticationPolicy.Default)]
        public class AuthenticationPolicyAppService : ApplicationService, IAuthenticationPolicyAppService
        {
            private readonly IAuthenticationPolicyRepository _authenticationPolicyRepository;
            private readonly ITenantAuthenticationsRepository _tenantAuthenticationsRepository;
            private readonly IIdentityUserRepository _identityUserRepository;
            private readonly IOrganizationUnitRepository _organizationUnitRepository;
            private readonly IRepository<IdentityUserOrganizationUnit> _IdentityUserOrganizationUnitRepository;
    
            public AuthenticationPolicyAppService(IAuthenticationPolicyRepository authenticationPolicyRepository, ITenantAuthenticationsRepository tenantAuthenticationsRepository,
                IIdentityUserRepository identityUserRepository, IOrganizationUnitRepository organizationUnitRepository,
                IRepository<IdentityUserOrganizationUnit> IdentityUserOrganizationUnitRepository)
            {
                _authenticationPolicyRepository = authenticationPolicyRepository;
                _identityUserRepository = identityUserRepository;
                _organizationUnitRepository = organizationUnitRepository;
                _IdentityUserOrganizationUnitRepository = IdentityUserOrganizationUnitRepository;
                _tenantAuthenticationsRepository = tenantAuthenticationsRepository;
            }
    
    
            //For Authentication policies...
            public async Task<PagedResultDto<AuthPolicyResponseDto>> GetAllAuthenticationPoliciesListAsync(GetAllRequestDto input)
            {
                var totalCount = await _authenticationPolicyRepository.GetCountAsync(input.Filter, input.PolicyName);
                var items = await _authenticationPolicyRepository.GetListAsync(input.Filter, input.PolicyName, input.Sorting, input.MaxResultCount, input.SkipCount);
    
                var policiesList = items.Select(x => new AuthPolicyResponseDto
                {
                    Name = x.Name,
                    IdentityType = x.IdentityType.ToString(),
                    Identity = GetUserOrGroupName(x.IdentityType, x.Identity).ToString(),
                    MFALevels = x.MFALevels,
                    Authentications = x.Authentications,
                    AlternateAuthentications = x.AlternateAuthentications
    
                }).ToList();
                return new PagedResultDto<AuthPolicyResponseDto>
                {
                    TotalCount = totalCount,
                    Items = policiesList
                };
            }
        }
    }
    
    //ITenantPolicyAppservice interface...
    
    using System.Threading.Tasks;
    using Volo.Abp.Application.Services;
    
    namespace Volo.Abp.Identity.AuthPolicy
    {
        public  interface ITenantPolicyAppService : IApplicationService
        {
            Task<TenantPolicyDto> GetTenantAuthenticationPolicyAsync();
    
            Task<BaseResponseDto> UpdateTenantAuthenticationPolicy(TenantPolicyDto input);
    
        }
    }
    

    Implimentation...

    using System.Linq;
    using System.Threading.Tasks;
    using Volo.Abp.Application.Services;
    
    namespace Volo.Abp.Identity.AuthPolicy
    {
        public class TenantPolicyAppService : ApplicationService, ITenantPolicyAppService
        {
            public readonly ITenantAuthenticationsRepository _tenantAuthenticationsRepository;
    
            public TenantPolicyAppService (ITenantAuthenticationsRepository tenantAuthenticationsRepository)
            {
                _tenantAuthenticationsRepository = tenantAuthenticationsRepository;
            }
            
            public async Task<TenantPolicyDto> GetTenantAuthenticationPolicyAsync()
            {
                using (CurrentTenant.Change(this.CurrentTenant?.Id))
                {
                    var tenantauthpolicy =  _tenantAuthenticationsRepository.GetListAsync().Result.FirstOrDefault();
                    return new TenantPolicyDto
                    { 
                        MFA = tenantauthpolicy.MFA,
                        PrimaryAuthentication = tenantauthpolicy.PrimaryAuthentication,
                        SecondaryAuthentication =tenantauthpolicy.SecondaryAuthentication,
                        AlternateAuthentications =tenantauthpolicy.AlternateAuthentications,
                        EnableAdaptiveAuthentication =tenantauthpolicy.EnableAdaptiveAuthentication
    
                    };
                }
               
               
            }
    
            public async Task<BaseResponseDto> UpdateTenantAuthenticationPolicy(TenantPolicyDto input)
            {
               
                using (CurrentTenant.Change(this.CurrentTenant?.Id))
                {
                    var updatetenantauthpolicy = _tenantAuthenticationsRepository.GetListAsync().Result.FirstOrDefault();
                    if (updatetenantauthpolicy != null)
                    {
                        updatetenantauthpolicy.MFA = input.MFA;
                        updatetenantauthpolicy.PrimaryAuthentication = input.PrimaryAuthentication;
                        updatetenantauthpolicy.SecondaryAuthentication = input.SecondaryAuthentication;
                        updatetenantauthpolicy.AlternateAuthentications = input.AlternateAuthentications;
                        updatetenantauthpolicy.EnableAdaptiveAuthentication = input.EnableAdaptiveAuthentication;
                         await _tenantAuthenticationsRepository.UpdateAsync(updatetenantauthpolicy,true);
                    }
                    else
                    {
                        var createpolicy = new TenantAuthentications()
                        {
                            TenantId = this.CurrentTenant?.Id,
                            MFA = input.MFA,
                            PrimaryAuthentication = input.PrimaryAuthentication,
                            SecondaryAuthentication = input.SecondaryAuthentication,
                            AlternateAuthentications = input.AlternateAuthentications,
                            EnableAdaptiveAuthentication = input.EnableAdaptiveAuthentication
                        };
                        await _tenantAuthenticationsRepository.InsertAsync(createpolicy,true);
                    }
    
                    return new BaseResponseDto
                    {
                        Message = "Success",
                        status = true
                    };
                }
            }
        }
    } 
    

    This is my code

    ErrorLog:

    2024-07-19 11:04:17.508 +05:30 [INF] Executing endpoint 'Volo.Abp.Identity.IdentityAuthenticationPoliciesController.GetAllAuthenticationPoliciesListAsync (Volo.Abp.Identity.Pro.HttpApi)'
    2024-07-19 11:04:17.512 +05:30 [INF] Route matched with {area = "identity", controller = "AuthenticationPolicies", action = "GetAllAuthenticationPoliciesList", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Volo.Abp.Application.Dtos.PagedResultDto`1[Volo.Abp.Identity.AuthPolicy.AuthPolicyResponseDto]] GetAllAuthenticationPoliciesListAsync(Volo.Abp.Identity.AuthPolicy.GetAllRequestDto) on controller Volo.Abp.Identity.IdentityAuthenticationPoliciesController (Volo.Abp.Identity.Pro.HttpApi).
    2024-07-19 11:04:17.533 +05:30 [ERR] ---------- RemoteServiceErrorInfo ----------
    {
      "code": null,
      "message": "An internal error occurred during your request!",
      "details": null,
      "data": {
        "ActivatorChain": "Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService"
      },
      "validationErrors": null
    }
    
    2024-07-19 11:04:17.534 +05:30 [ERR] An exception was thrown while activating Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService.
    Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService.
     ---> Autofac.Core.DependencyResolutionException: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService' can be invoked with the available services and parameters:
    Cannot resolve parameter 'Volo.Abp.Identity.AuthPolicy.ITenantAuthenticationsRepository tenantAuthenticationsRepository' of constructor 'Void .ctor(Volo.Abp.Identity.AuthPolicy.IAuthenticationPolicyRepository, Volo.Abp.Identity.AuthPolicy.ITenantAuthenticationsRepository, Volo.Abp.Identity.IIdentityUserRepository, Volo.Abp.Identity.IOrganizationUnitRepository, Volo.Abp.Domain.Repositories.IRepository`1[Volo.Abp.Identity.IdentityUserOrganizationUnit])'.
       at Autofac.Core.Activators.Reflection.ReflectionActivator.&lt;&gt;c__DisplayClass12_0.&lt;UseSingleConstructorActivation&gt;b__0(ResolveRequestContext ctxt, Action`1 next)
       at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
       at Autofac.Builder.RegistrationBuilder`3.<>c__DisplayClass41_0.<PropertiesAutowired>b__0(ResolveRequestContext ctxt, Action`1 next)
       at Autofac.Extras.DynamicProxy.RegistrationExtensions.&lt;&gt;c__DisplayClass8_0`3.<EnableInterfaceInterceptors>b__1(ResolveRequestContext ctxt, Action`1 next)
       at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
       --- End of inner exception stack trace ---
       at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
       at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next)
       at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next)
       at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request)
       at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request)
       at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance)
       at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters)
       at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.&lt;&gt;c__DisplayClass6_0.&lt;CreateControllerFactory&gt;g__CreateController|0(ControllerContext controllerContext)
       at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
       at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
    --- End of stack trace from previous location ---
       at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.&lt;InvokeNextExceptionFilterAsync&gt;g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
    2024-07-19 11:04:17.536 +05:30 [ERR] ---------- Exception Data ----------
    ActivatorChain = Volo.Abp.Identity.IdentityAuthenticationPoliciesController -> Volo.Abp.Identity.AuthPolicy.AuthenticationPolicyAppService
    
    2024-07-19 11:04:17.552 +05:30 [INF] Executing ObjectResult, writing value of type 'Volo.Abp.Http.RemoteServiceErrorResponse'.
    2024-07-19 11:04:17.557 +05:30 [INF] Executed action Volo.Abp.Identity.IdentityAuthenticationPoliciesController.GetAllAuthenticationPoliciesListAsync (Volo.Abp.Identity.Pro.HttpApi) in 44.0186ms
    2024-07-19 11:04:17.557 +05:30 [INF] Executed endpoint 'Volo.Abp.Identity.IdentityAuthenticationPoliciesController.GetAllAuthenticationPoliciesListAsync (Volo.Abp.Identity.Pro.HttpApi)'
    2024-07-19 11:04:17.557 +05:30 [INF] Request finished HTTP/2 GET https://localhost:44347/api/identity/authentication-policies/authentication-policies-list - - - 500 - application/json;+charset=utf-8 74.7870ms
    2024-07-19 11:04:17.602 +05:30 [INF] Background job started
    2024-07-19 11:04:17.605 +05:30 [INF] Background job complted!! it will run agian
    2024-07-19 11:04:20.621 +05:30 [INF] Background job started
    2024-07-19 11:04:20.630 +05:30 [INF] Background job complted!! it will run agian
    2024-07-19 11:04:23.642 +05:30 [INF] Background job started
    
    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    Thanks. I see the error is

    
    Cannot resolve parameter 'Volo.Abp.Identity.AuthPolicy.ITenantAuthenticationsRepository tenantAuthenticationsRepository' of constructor
    
    'Void .ctor(
        Volo.Abp.Identity.AuthPolicy.IAuthenticationPolicyRepository,
        Volo.Abp.Identity.AuthPolicy.ITenantAuthenticationsRepository,        
        Volo.Abp.Identity.IIdentityUserRepository, Volo.Abp.Identity.IOrganizationUnitRepository,  Volo.Abp.Domain.Repositories.IRepository`1[Volo.Abp.Identity.IdentityUserOrganizationUnit])'.
    

    Please share the code of ITenantAuthenticationsRepository and your ef core module

    Thanks.

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    Vilasini created

    hello sure PFB code :

    Entity table: AuthenticationPolicy
     
    public class AuthenticationPolicy : FullAuditedEntity<Guid>, IMultiTenant
    {
        public Guid? TenantId { get; set;}
        public string Name { get; set;}
        public string Identity { get; set; }
        public IdentityType IdentityType { get; set;}
        public int MFALevels { get; set;}
        public string Authentications { get; set; }
        public string AlternateAuthentications { get; set; }
    
    }
     
    Repository Declaration:
    
    public  interface IAuthenticationPolicyRepository : IRepository<AuthenticationPolicy, Guid>
    {
        Task<List<AuthenticationPolicy>> GetListAsync(
            string filterText = null,
            string policyName=null,
            string sorting = null,
            int maxResultCount = int.MaxValue,
            int skipCount = 0,
            CancellationToken cancellationToken = default
        );
        Task<long> GetCountAsync(
            string filterText = null,
            string policyName=null,
            CancellationToken cancellationToken = default);
    }
     
    Repository Implimentation:
    
    public  class EFCoreAuthenticationPolicyRepository : EfCoreRepository<IdentityProDbContext, AuthenticationPolicy, Guid>, IAuthenticationPolicyRepository
    {
        public EFCoreAuthenticationPolicyRepository(IDbContextProvider<IdentityProDbContext> dbContextProvider)
            : base(dbContextProvider)
        {
        }
        public async Task<long> GetCountAsync(
            string filterText = null, 
            string policyName = null, 
            CancellationToken cancellationToken = default)
        {
            var query = ApplyFilter((await GetDbSetAsync()), filterText, policyName);
            return await query.LongCountAsync(GetCancellationToken(cancellationToken));
        }
        public async Task<List<AuthenticationPolicy>> GetListAsync(
            string filterText = null, 
            string policyName = null, 
            string sorting = null, 
            int maxResultCount = int.MaxValue,
            int skipCount = 0,
            CancellationToken cancellationToken = default)
        {
            var query = ApplyFilter((await GetQueryableAsync()), filterText, policyName);
            query = query.OrderBy(string.IsNullOrWhiteSpace(sorting) ? AuthenticationPolicyConsts.GetDefaultSorting(false) : sorting);
            return await query.PageBy(skipCount, maxResultCount).ToListAsync(cancellationToken);
        }
        protected virtual IQueryable<AuthenticationPolicy> ApplyFilter(
            IQueryable<AuthenticationPolicy> query,
            string filtertext,
            string policyName=null)
        {
            return query.WhereIf(!string.IsNullOrWhiteSpace(filtertext), e => e.Name.Contains(filtertext))
                        .WhereIf(!string.IsNullOrWhiteSpace(policyName), e => e.Name.Contains(policyName));
        }
    }
     
    Entity table: TenantAuthentications 
    public class TenantAuthentications : FullAuditedEntity<Guid>,IMultiTenant
    {
        public Guid? TenantId { get; set; }
        public bool MFA { get; set; }
        public AuthenticationOptions PrimaryAuthentication { get; set; }
        public AuthenticationOptions SecondaryAuthentication { get; set; }
        public string AlternateAuthentications { get; set; }
        public bool EnableAdaptiveAuthentication { get; set; }
    }
     
    Repository Declaration :
     
    using Volo.Abp.Domain.Repositories;
    namespace Volo.Abp.Identity.AuthPolicy
    {
        public interface ITenantAuthenticationsRepository : IRepository<TenantAuthentications, Guid>
        {
        }
    }
     
    Repository Implimentation
    public class EFCoreTenantAuthenticatiosRepository : EfCoreRepository<IdentityProDbContext, TenantAuthentications, Guid>, ITenantAuthenticationsRepository
    {
        public EFCoreTenantAuthenticatiosRepository(IDbContextProvider<IdentityProDbContext> dbContextProvider)
            :base(dbContextProvider)
        {
        }
    }
     
    Efcore web module
     
    typeof(AbpIdentityProDomainModule),
        typeof(AbpIdentityEntityFrameworkCoreModule))]
    public class AbpIdentityProEntityFrameworkCoreModule : AbpModule
    {
        public override void ConfigureServices(ServiceConfigurationContext context)
        {
            context.Services.AddAbpDbContext<IdentityProDbContext>(options =>
            {
                options.ReplaceDbContext<IIdentityDbContext, IIdentityProDbContext>();
            });
        }
        public override void OnApplicationInitialization(ApplicationInitializationContext context)
        {
        }
    }
    
    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Your TenantAuthentications is an entity instead of AggregateRoot.

    You can try to add

     options.AddRepository<TenantAuthentications, EFCoreTenantAuthenticatiosRepository>();
    

    https://docs.abp.io/en/abp/latest/Entities#entities https://docs.abp.io/en/abp/latest/Entities#aggregateroot-class

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    Vilasini created

    hi Maliming , i have tried above but still im not able to test my Api function it is not at all hitting the controller can you please help

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    Is there any exception?

    Can you share a simple project?

    liming.ma@volosoft.com

    Thanks

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    I have shared the project with you.

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    Vilasini created

    hi maliming , Able to use the controller Thanks a lot . can you please explain where the issue occurred and how we can identify it , where do we need to fix the code if there is any Thanks

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    1.

    add two DbSet to IIdentityProDbContext

    DbSet<TenantAuthentications> TenantAuthentications { get; }
    DbSet<AuthenticationPolicy> AuthenticationPolicy { get; }
    

    2.

    AddRepository in AbpIdentityProEntityFrameworkCoreModule

    options.AddRepository<TenantAuthentications, EFCoreTenantAuthenticationsRepository>();
    options.AddRepository<AuthenticationPolicy, EFCoreAuthenticationPolicyRepository>();
    

    3.

    Rename EFCoreTenantAuthenticatiosRepository to EFCoreTenantAuthenticationsRepository

    4.

    Remove IRepository<IdentityUserOrganizationUnit>from AuthenticationPolicyAppService

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    Vilasini created

    hi mailiming, i need to use the IdentityUserOrganizationUnit in my existing project scenario how can i use it as a Repository. Thanks

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    hi

    You can inject the IOrganizationUnitRepository or IBasicRepository<OrganizationUnit, Guid>

    Using IOrganizationUnitRepository is the recommended way.

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    Vilasini created

    hello maliming thanks for the help issue is resolved

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
  • User Avatar
    0
    maliming created
    Support Team Fullstack Developer

    : )

    Markdown supported.
    Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
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.8.0-preview. Updated on September 21, 2026, 06:18
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.