外向小朋友 2021-10-25 17:30 采纳率: 66.7%
浏览 81
已结题

.net 5,使用路由,显示找到了多个接受所有给定参数类型的构造函数。应该只有一个适用的构造函数


 app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Menu}/{action=Index}/{id?}");
            });
//然后我的MenuController中只有一个Index的action

一运行,程序就会进入路由的部分,然后报错
InvalidOperationException: Multiple constructors accepting all given argument types have been found in type 'PesitcideWMS.Controllers.MenuController'. There should only be one applicable constructor.
Microsoft.Extensions.DependencyInjection.ActivatorUtilities.TryFindMatchingConstructor(Type instanceType, Type[] argumentTypes, ref ConstructorInfo matchingConstructor, ref Nullable[] parameterMap)

这是MenuController

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using PesitcideWMS.Domain.Entity;
using PesitcideWMS.Models;
using PesitcideWMS.Utils;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;

namespace PesitcideWMS.Controllers
{
    [Authorize]
    public class MenuController : Controller
    {
        private readonly ILogger<MenuController> _logger;
        private readonly CoreDbContext _CoreDbContext;
        
        public MenuController(ILogger<MenuController> logger)
        {
            _logger = logger;
        }
        public MenuController(CoreDbContext CoreDbContext)
        {
            _CoreDbContext = CoreDbContext;
        }
        //public async Task<IActionResult> InitView()
        //{
        //    ViewBag.menu_tree = await _CoreDbContext.MenuView.ToListAsync();
        //    return View();
        //}
        public IActionResult Index()
        {
            ViewBag.shouye = "/Home/Index";

            return View();
        }
        [HttpPost]
        public ActionResult<string> GetLeftNavAsync()
        {
            List<MenuView> allValue = new List<MenuView>();
            allValue = _CoreDbContext.MenuView.ToList();
            List<TreeJsonModel> a = Tree.GetTreeJson(allValue);
            return JsonConvert.SerializeObject(a);
        }


        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}


  • 写回答

1条回答 默认 最新

  • Rena Ni 2021-10-26 09:58
    关注

    错误信息很明确提示你了你请求的MenuController里面有多个构造函数,只允许有一个构造函数。

        public class MenuController : Controller
        {
            private readonly ILogger<MenuController> _logger;
            private readonly CoreDbContext _CoreDbContext;
            
            public MenuController(ILogger<MenuController> logger,CoreDbContext CoreDbContext)
            {
                _logger = logger;
               _CoreDbContext = CoreDbContext;
            }
         }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月29日
  • 已采纳回答 10月26日
  • 修改了问题 10月26日
  • 创建了问题 10月25日

悬赏问题

  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀