- ABP Framework version: 8.2.0
- UI Type: Angular
- Database System: MySQL
- Tiered (for MVC) or Auth Server Separated (for Angular): yes
- Exception message and full stack trace:
- An exception was thrown while activating CastandCrew.PSL.VendorManagement.Samples.SampleController.
- 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, Action1 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.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass6_0. - Steps to reproduce the issue: I have create a new custom module and micro service. In my module I have below entity,appservice and controller. When accessing the the controller from swagger/UI I received the above error.
Entity
public class Vendors : Entity<int>, ICreationAuditedObject
{
[MaxLength(128)]
public string Name { get; set; }
public DateTime CreationTime { get; set; }
public Guid? CreatorId { get; set; }
internal Vendors(string name)
{
Name= name;
CreationTime = DateTime.Now;
CreatorId = Guid.NewGuid();
}
}
App Service
public class VendorAppService : VendorManagementAppService, IVendorManagementAppService
{
private readonly VendorManager _vendorManager;
private readonly IRepository<Vendors, int> _vendorRepository;
public VendorAppService(VendorManager vendorManager, IRepository<Vendors, int> vendorRepository)
{
_vendorManager = vendorManager;
_vendorRepository = vendorRepository;
ObjectMapperContext = typeof(VendorManagementApplicationModule);
}
[Authorize(VendorManagementPermissions.Vendors.Create)]
public async Task<VendorDto> CreateAsync(VendorDto vendor)
{
var vendor1 = await _vendorManager.CreateAsync(
vendor.Name
);
return ObjectMapper.Map<Vendors, VendorDto>(vendor1);
}
[Authorize(VendorManagementPermissions.Vendors.Delete)]
public async Task DeleteAsync(int id)
{
await _vendorRepository.DeleteAsync(id);
}
public async Task<ListResultDto<VendorDto>> GetAllAsync()
{
var vendors = await _vendorRepository.GetListAsync();
return new ListResultDto<VendorDto>(
ObjectMapper.Map<List<Vendors>, List<VendorDto>>(vendors)
);
}
public async Task<VendorDto> GetAsync(int id)
{
return ObjectMapper.Map<Vendors, VendorDto>(await _vendorRepository.GetAsync(id));
}
[Authorize(VendorManagementPermissions.Vendors.Create)]
public async Task<VendorDto> UpdateAsync(VendorDto input)
{
var vendor = await _vendorRepository.GetAsync(input.Id);
vendor.Name = input.Name;
await _vendorRepository.UpdateAsync(vendor);
return ObjectMapper.Map<Vendors, VendorDto>(vendor);
}
}
Controller
[Area(VendorManagementRemoteServiceConsts.ModuleName)]
[RemoteService(Name = VendorManagementRemoteServiceConsts.RemoteServiceName)]
public class VendorController : IVendorManagementAppService
{
private readonly IVendorManagementAppService _vendorManagementAppService;
public VendorController(IVendorManagementAppService vendorManagementAppService)
{
_vendorManagementAppService = vendorManagementAppService;
}
[Authorize]
public Task<VendorDto> CreateAsync(VendorDto vendor)
{
return _vendorManagementAppService.CreateAsync(vendor);
}
[Authorize]
public Task DeleteAsync(int id)
{
return _vendorManagementAppService.DeleteAsync(id);
}
public Task<VendorDto> GetAsync(int id)
{
return _vendorManagementAppService.GetAsync(id);
}
[Authorize]
public Task<ListResultDto<VendorDto>> GetAllAsync()
{
return _vendorManagementAppService.GetAllAsync();
}
[Authorize]
public Task<VendorDto> UpdateAsync(VendorDto vendor)
{
return _vendorManagementAppService.UpdateAsync(vendor);
}
}
Module configuration to include the repositories
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAbpDbContext<VendorManagementDbContext>(options =>
{
options.AddDefaultRepositories(includeAllEntities: true);
});
}
Above all code is written in DDD module and reference through the micro-service. Is there anything that I'm missing?
4 Answer(s)
-
0
Hi,
can you share the full error logs
-
0
Hi,
can you share the full error logs
8/22/2024 1:47:16 AM [Information] Request starting "HTTP/1.1" "GET" "http"://"localhost:44323""""/api/vendor-management/vendor""" - null null 8/22/2024 1:47:16 AM [Information] Executing endpoint '"CastandCrew.PSL.VendorManagement.VendorController.VendorController.GetAllAsync (CastandCrew.PSL.VendorManagement.HttpApi)"' 8/22/2024 1:47:16 AM [Information] Route matched with "{area = "vendorManagement", action = "GetAll", controller = "Vendor", page = ""}". Executing controller action with signature "System.Threading.Tasks.Task
1[Volo.Abp.Application.Dtos.ListResultDto
1[CastandCrew.PSL.VendorManagement.Vendor.VendorDto]] GetAllAsync()" on controller "CastandCrew.PSL.VendorManagement.VendorController.VendorController" ("CastandCrew.PSL.VendorManagement.HttpApi"). 8/22/2024 1:47:16 AM [Error] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": { "ActivatorChain": "CastandCrew.PSL.VendorManagement.VendorController.VendorController" }, "validationErrors": null }8/22/2024 1:47:16 AM [Error] Autofac.Core.DependencyResolutionException: An exception was thrown while activating CastandCrew.PSL.VendorManagement.VendorController.VendorController. ---> Autofac.Core.DependencyResolutionException: None of the constructors found on type 'CastandCrew.PSL.VendorManagement.VendorController.VendorController' can be invoked with the available services and parameters: Cannot resolve parameter 'CastandCrew.PSL.VendorManagement.Vendor.IVendorManagementAppService vendorManagementAppService' of constructor 'Void .ctor(CastandCrew.PSL.VendorManagement.Vendor.IVendorManagementAppService)'.
See https://autofac.rtfd.io/help/no-constructors-bindable for more info. at Autofac.Core.Activators.Reflection.ReflectionActivator.<>c__DisplayClass14_0.<UseSingleConstructorActivation>b__0(ResolveRequestContext context, Action
1 next) at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action
1 next) at Autofac.Builder.RegistrationBuilder3.<>c__DisplayClass41_0.<PropertiesAutowired>b__0(ResolveRequestContext context, Action
1 next) at Autofac.Builder.RegistrationBuilder3.<>c__DisplayClass39_0.<OnActivated>b__0(ResolveRequestContext context, Action
1 next) at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action1 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, Action1 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, IEnumerable1 parameters, Object& instance) at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable
1 parameters) at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass6_0.<CreateControllerFactory>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.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)8/22/2024 1:47:16 AM [Error] ---------- Exception Data ---------- ActivatorChain = CastandCrew.PSL.VendorManagement.VendorController.VendorController
8/22/2024 1:47:16 AM [Information] Executing "ObjectResult", writing value of type '"Volo.Abp.Http.RemoteServiceErrorResponse"'. 8/22/2024 1:47:16 AM [Information] Executed action "CastandCrew.PSL.VendorManagement.VendorController.VendorController.GetAllAsync (CastandCrew.PSL.VendorManagement.HttpApi)" in 6.6256ms 8/22/2024 1:47:16 AM [Information] Executed endpoint '"CastandCrew.PSL.VendorManagement.VendorController.VendorController.GetAllAsync (CastandCrew.PSL.VendorManagement.HttpApi)"' 8/22/2024 1:47:16 AM [Information] Request finished "HTTP/1.1" "GET" "http"://"localhost:44323""""/api/vendor-management/vendor""" - 500 null "application/json; charset=utf-8" 20.7208ms
-
0
None of the constructors found on type 'CastandCrew.PSL.VendorManagement.VendorController.VendorController' can be invoked with the available services and parameters: Cannot resolve parameter 'CastandCrew.PSL.VendorManagement.Vendor.IVendorManagementAppService vendorManagementAppService' of constructor 'Void .ctor(CastandCrew.PSL.VendorManagement.Vendor.IVendorManagementAppService)'.
it seems like some services are not registered in the IOC.
public class VendorAppService : VendorManagementAppService, IVendorManagementAppService
Please rename
IVendorManagementAppService
toIVendorAppService
public interface IVendorAppService : IApplicationService ... public class VendorAppService : VendorManagementAppService, IVendorAppService ...
-
0
Resolved thanks.