請注意,我使用的是 Autofac,但是當我運行 API 并使用此 URL 與Postman進行檢查時,:http://localhost:1234/api/calculations/corpname&51&114&1045但我有一個用于計算控制器的公共無參數構造函數:using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Web;using System.Web.Http;using AutoMapper;using MyAppTools.Data;using MyAppTools.Models;namespace MyAppTools.Controllers{? ? public class CalculationsController : ApiController? ? {? ? ? ? private static readonly NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();? ? ? ? private readonly IMapper _mapper;? ? ? ? private readonly ICalcRepository _repository;? ? ? ? private readonly IMyModelUserRepository _myModelRepository;? ? ? ? public CalculationsController()? ? ? ? {? ? ? ? }? ? ? ? public CalculationsController(ICalcRepository repository, IMyModelUserRepository myModelRepository, IMapper mapper)? ? ? ? {? ? ? ? ? ? _repository = repository;? ? ? ? ? ? _myModelRepository = myModelRepository;? ? ? ? ? ? _mapper = mapper;? ? ? ? }? ? ? ? public async Task<IHttpActionResult> Get()? ? ? ? {? ? ? ? ? ? try? ? ? ? ? ? {? ? ? ? ? ? ? ? var result = await _repository.GetAllCalculationsAsync();? ? ? ? ? ? ? ? if (result == null) return NotFound();? ? ? ? ? ? ? ? // Mapping? ? ? ? ? ? ? ? // This centralizes all of the config? ? ? ? ? ? ? ? var mappedResult = _mapper.Map<IEnumerable<CalculationModel>>(result);? ? ? ? ? ? ? ? return Ok(mappedResult);? ? ? ? ? ? }? ? ? ? ? ? catch (Exception ex)? ? ? ? ? ? {? ? ? ? ? ? ? ? Logger.Error(ex);? ? ? ? ? ? ? ? // Be careful about returning exception here? ? ? ? ? ? ? ? return InternalServerError();? ? ? ? ? ? }? ? ? ? }到目前為止,我已經在這里檢查解決方案:Autofac 和 ASP .Net MVC 4 Web API https://www.nopcommerce.com/boards/t/38102/none-of-the-constructors-found-with-autofaccoreactivatorsreflectiondefaultconstructorfinder-on-type.aspx但我認為這不適用于我的情況。
1 回答

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
錯誤消息中有趣的部分是
Autofac.Core.Activators.Reflection.DefaultConstructorFinder
使用on 類型找到的任何構造函數都EddiTools.Data.CalcRepository
不能使用可用的服務和參數來調用:無法解析
EddiTools.Data.ICalcContext context
構造函數的參數Void .ctor(EddiTools.Data.ICalcContext)
。
這意味著 Autofac 嘗試創建一個CalcRepository
,但沒有ICalcContext
可用的。
如果你查看你的注冊,你只注冊了類型,而沒有表明它是一個ICalcContext
bldr.RegisterType<CalcContext>() .InstancePerRequest();
如果你將其更改為
bldr.RegisterType<CalcContext>() .As<ICalcContext>() .InstancePerRequest();
您的CalcContext
類型將被注冊為 a,ICalcContext
這將讓 Autofac 創建您的CalcRepository
- 1 回答
- 0 關注
- 119 瀏覽
添加回答
舉報
0/150
提交
取消