Jho*_*dez 1 .net c# controller .net-core
我收到此错误:
无法解析类型的服务
我正在 .NET Core 上使用工作单元存储库项目。我在另一层上有一个服务,但我更改为 TestServices,然后我创建了一个服务层,其中是FlightService和IFlightService。
程序
builder.Services.AddDbContext<DataContext>(options =>
options.UseSqlServer(builder.Configuration
.GetConnectionString("ConnectionString")));
builder.Services.AddControllers().AddJsonOptions(x =>
x.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles);
builder.Services.AddTransient<IUnitOfWork, UnitOfWork>();
builder.Services.AddScoped<IFlightRepository, FlightRepository>();
builder.Services.AddControllers();
Run Code Online (Sandbox Code Playgroud)
FlightController:
[ApiController]
[Route("Api")]
public class FlightController : Controller
{
private readonly ILogger<SearchFlightsController> _logger;
private readonly IUnitOfWork unitOfWork;
public readonly IFlightService _flightService;
public FlightController(ILogger<SearchFlightsController> logger,
IUnitOfWork unitOfWork,
IFlightService flightService)
{
_logger = logger;
this.unitOfWork = unitOfWork;
_flightService = flightService;
}
[HttpGet("GetFlightById/{flightId}")]
public async Task<IActionResult> GetFlightById(int flightId)
{
var details = await _flightService.GetFlightById(flightId);
if (details != null)
{
return Ok(details);
}
else
{
return BadRequest();
}
}
}
Run Code Online (Sandbox Code Playgroud)
错误
System.InvalidOperationException:尝试激活“NewShore.Controllers.FlightController”时无法解析类型“Services.Interfaces.IFlightService”的服务。
在 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, Boolean isDefaultParameterRequired)
在 lambda_method4(Closure, IServiceProvider, Object[])
在 Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass6_0.g__CreateController |0(ControllerContext controllerContext)
在 Microsoft.AspNetCore.Mvc.Infrastruct.ControllerActionInvoker.Next(State& next, Scope& range, Object& state, Boolean& isCompleted)
在 Microsoft.AspNetCore.Mvc.Infrastruct.ControllerActionInvoker.InvokeInnerFilterAsync()
--- 结束来自先前位置的堆栈跟踪 ---
在 Microsoft.AspNetCore.Mvc.Infrastruct.ResourceInvoker.g__Awaited|20_0(ResourceInvoker 调用程序、任务lastTask、状态下一个、范围范围、对象状态、布尔值 isCompleted)
在 Microsoft.AspNetCore.Mvc.Infrastruct。 ResourceInvoker.g__Awaited|17_0(ResourceInvoker 调用程序、任务任务、IDisposable 范围)
位于 Microsoft.AspNetCore.Mvc.Infrastruct.ResourceInvoker.g__Awaited|17_0(ResourceInvoker 调用程序、任务任务、IDisposable 范围)
位于 Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask| 6_0(端点端点、任务 requestTask、ILogger 记录器)
位于 Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext 上下文)
位于 Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
位于 Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke( HttpContext httpContext,ISwaggerProvider swaggerProvider)
位于 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddlewareImpl.Invoke(HttpContext context)
我读了一些帖子,我尝试更改为AddScoped两者,AddTransient对于IFlightRepository. 我看到了命令或命令Program.cs,但一切似乎都正常。
你能纠正我吗?
小智 5
您将 IFlightService 注入到 FlightController 中,但未注册此依赖项。错误消息告诉您无法解决 FlightController 中的依赖关系。
将此行添加到 Program.cs
builder.Services.AddTransient<IFlightService, FligtService>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
786 次 |
| 最近记录: |