时每个控制器方法都返回500错误。NETCore-尝试将存储库添加到我的API控制器,但是当我执行每个控制器方法,如标题所示,它返回500错误。我正在创建一个WebAPI,并且在我的API控制器中,我试图在构造函数中声明一个存储库。我成功地声明了它,但是我尝试在该控制器中调用的每个API方法都返回500错误。当我删除构造函数/存储库变量时,我没有问题。调节器[Route("api/[controller]")]publicclassTestController:Controller{privateITestRepository_testRepository;publicTestController(ITestRepositorytestRepository){_testRepository=testRepository;}[HttpGet]publicIEnumerableGet(){returnnewstring[]{"value1","value2"};}}Startup.cspublicvoidConfigureServices(IServiceCollectionservices){//添加框架服务。服务.AddMvcCore().AddJsonFormatters().AddApiExplorer();服务.AddScoped();服务.AddSwaggerGen();我错过了什么吗?简短回答我正在尝试在构造函数中声明一个存储库。我成功地声明了它,但是我尝试在该控制器中调用的每个API方法都返回500错误。当我删除构造函数/存储库变量时,我没有问题。您可能需要进行以下两项更改之一:从存储库的构造函数中删除参数,或注册存储库的构造函数采用的服务。说明您问题中的确切代码适用于以下存储库代码。publicinterfaceITestRepository{}publicclassTestRepository:ITestRepository{}但是,如果构造函数采用参数,代码会抛出500错误。publicclassTestRepository:ITestRepository{publicTestRepository(objectsomeObject){}}它抛出构造函数,因为对services.AddScoped()的调用要求TestRepository构造函数满足这两个条件之一。没有参数的构造函数,或采用可解析服务的构造函数。因此,要修复您的代码,您需要进行以下两项更改之一:从构造函数中删除参数,或注册构造函数使用的服务。例如,如果存储库在其构造函数中使用DbContext,您的代码可能如下所示。Startup.cspublicvoidConfigureServices(IServiceCollectionservices){services.AddMvcCore().AddJsonFormatters().AddApiExplorer();服务.AddEntityFramework().AddInMemoryDatabase().AddDbContext();//注册一个服务services.AddScoped();服务.AddSwaggerGen();}TestRepository.cspublicclassTestRepository:ITestRepository{//将注册的服务传递给ctorpublicTestRepository(TestDbContexttestDbContext){}}首先,我们使用Microsoft.practices.Unity注册依赖组件,然后我们解析它们使用在哪里。您在使用它之前没有解决依赖关系。公共类TestController:控制器{私有ITestRepository_testRepository;publicTestController(ITestRepositorytestRepository){_testRepository=testRepository;}[HttpGet]publicIEnumerableGet(){returnnewstring[]{"value1","value2"};}}这里注册:DIContainer.Instance.RegisterType();我们在使用之前解决依赖关系。以上是C#学习教程:.NETCore-试图将存储库添加到我的API控制器,但是当我执行每个控制器方法时,它都返回500错误。分享完整内容,如果对大家有用需要了解更多C#学习教程,希望大家多多关注——DIContainer.Instance.Resolve().RetrieveTwitterTags();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
