首页 文章

访问 Web 服务时未定义无参数构造函数

提问于
浏览
1

无法弄清楚我做错了什么。

控制器代码。

public class HomeController : Controller
{
    private readonly SoapWebService _db;

    public HomeController(SoapWebService db)
    {
        _db = db;
    }

    public ActionResult Index()
    {
        return View(_db.GetAllItems("APIKey").ToList());
    }
 }

查看代码

@model IEnumerable<ProjectName.ServiceName.ItemName>

@foreach (var item in Model) {
     @Html.DisplayFor(item => item.Title)
}

错误

没有为此对象定义的无参数构造函数。

描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.MissingMethodException:没有为此对象定义无参数构造函数。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

1 回答

  • 3

    不使用依赖注入功能(框架或 hand-spun),您的控制器无法实例化,因为没有无参数构造函数。

    在您的情况下,依赖注入器将创建SoapWebService的实例以传递到仅控制器构造函数。

    如果不使用 DI,您将需要一个无参数构造函数,它将实例化任何依赖项:

    public class HomeController : Controller
    {
        private readonly SoapWebService _db;
    
        public HomeController()
            : this(new SoapWebService()) { }
    
        public HomeController(SoapWebService db)
        {
            _db = db;
        }
    
        public ActionResult Index()
        {
            return View(_db.GetAllItems("APIKey").ToList());
        }
     }
    

相关问题