This is the error I get:
System.InvalidOperationException: Unable to resolve service for type 'myBackEnd.Entities.Striper' while attempting to activate 'myBackEnd.Controllers.StripeController'. at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, Boolean isDefaultParameterRequired)
I am working on using Automapper for the first time. I am also new to NET. I am using an HTTPPOST to get data from the front end in the format
amount : string;
currency : string;
description : string;
token : string;
name: string;
address_city: string;
address_line1: string;
address_line2: string;
address_state: string;
address_zip: string;
address_country: string;
I have stripe.cs and stripeDto.cs files:
public class Striper
{
public object Amount { get; set; }
public string Currency { get; set; }
public object Description { get; set; }
public string Token { get; set; }
public string Name { get; set; }
public string Address_line1 { get; set; }
public string Address_line2 { get; set; }
public string Address_state { get; set; }
public string Address_zip { get; set; }
public string Address_country { get; set; }
}
stripeDto:
public class StripeDto
{
public object Amount { get; set; }
public string Currency { get; set; }
public object Description { get; set; }
public string Token { get; set; }
public string Name { get; set; }
public string Address_line1 { get; set; }
public string Address_line2 { get; set; }
public string Address_state { get; set; }
public string Address_zip { get; set; }
public string Address_country { get; set; }
}
This is the mapping profile file:
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Striper, StripeDto>();
CreateMap<StripeDto, Striper>();
}
}
Finally this is the Controller:
private readonly AppDbContext _context;
private IMapper _mapper;
public StripeController(AppDbContext context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
public async Task<IActionResult> PostCreditCardData([FromBody] StripeDto stripeDto)
{
Console.WriteLine("got this from the front end", stripeDto);
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
_context.StripeDto.Add(stripeDto);
// Instantiate source object stripe
await _context.SaveChangesAsync();
_striper = _mapper.Map<Striper>(stripeDto);
return Ok(_striper);
}
I get this error in visual studio "Unable to resolve service for type 'myBackEnd.Entities.Striper'"
Here is the startup.cs code:
services.AddAutoMapper();
First, you must install Automapper dependency injection package:
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
Call services.AddAutoMapper() in ConfigureServices method in the Startup class.
More on this at: https://dotnetcoretutorials.com/2017/09/23/using-automapper-asp-net-core/
Your AutoMapper
configuration in Startup
class should be as follows:
public void ConfigureServices(IServiceCollection services)
{
// Auto Mapper Configurations
var mappingConfig = new MapperConfiguration(mc =>
{
mc.AddProfile(new MappingProfile());
});
IMapper mapper = mappingConfig.CreateMapper();
services.AddSingleton(mapper);
//........
}
I know it's too late
but it's because of your startup and AutoMapper configuration
services.AddAutoMapper(typeof(MappingProfile).Assembly);
best regards
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.