C# '中的服务器错误/';应用没有为此对象定义参数构造函数

C# '中的服务器错误/';应用没有为此对象定义参数构造函数,c#,parameters,constructor,C#,Parameters,Constructor,我在我的HomeController.cs中得到一个没有为此对象定义参数构造函数的错误。根据,我必须确保我的ActionResults没有参数。但是我的HomeController ActionResult没有参数: public class HomeController : Controller { /// <summary> /// injected settings /// </summary> private ISettings s

我在我的
HomeController.cs
中得到一个
没有为此对象定义参数构造函数的错误。根据,我必须确保我的
ActionResults
没有参数。但是我的HomeController ActionResult没有参数:

public class HomeController : Controller
{
    /// <summary>
    /// injected settings
    /// </summary>
    private ISettings settings;

    /// <summary>
    /// Initializes a new instance of the <see cref="HomeController"/> class.
    /// </summary>
    /// <param name="settings">The settings.</param>
    public HomeController(ISettings settings)
    {
        this.settings = settings;
    }

    /// <summary>
    /// Default index page
    /// </summary>
    /// <returns>redirects to the default application home page</returns>
    public ActionResult Index()
    {
        return RedirectToAction("Index", "Home", new { area = settings.Application, master = "default" });
    }
}
公共类HomeController:控制器
{
/// 
///注入设置
/// 
私人设置;
/// 
///初始化类的新实例。
/// 
///设置。
公共家庭控制器(ISettings设置)
{
this.settings=设置;
}
/// 
///默认索引页
/// 
///重定向到默认应用程序主页
公共行动结果索引()
{
返回RedirectToAction(“Index”,“Home”,new{area=settings.Application,master=“default”});
}
}
我怎样才能找出错误的来源

完整堆栈跟踪:

[MissingMethodException: No parameterless constructor defined for this object.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) +98
   System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +241
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +69
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +67

[InvalidOperationException: An error occurred when trying to create a controller of type 'Web.Lifescience.Controllers.HomeController'. Make sure that the controller has a parameterless public constructor.]
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +182
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +74
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +232
   System.Web.Mvc.<>c__DisplayClass6.<BeginProcessRequest>b__2() +49
   System.Web.Mvc.<>c__DisplayClassb`1.<ProcessInApplicationTrust>b__a() +13
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 func) +124
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +98
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +50
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8970356
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184
[MissingMethodException:没有为此对象定义无参数构造函数。]
System.RuntimeTypeHandle.CreateInstance(RuntimeType类型、Boolean publicOnly、Boolean noCheck、Boolean&canBeCached、RuntimeMethodHandleInternal&ctor、Boolean&bNeedSecurityCheck)+0
System.RuntimeType.CreateInstanceSlow(布尔publicOnly、布尔skipCheckThis、布尔fillCache)+98
System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly、布尔skipVisibilityChecks、布尔skipCheckThis、布尔fillCache)+241
System.Activator.CreateInstance(类型,布尔非公共)+69
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext-RequestContext,类型controllerType)+67
[InvalidOperationException:尝试创建“Web.Lifescience.Controllers.HomeController”类型的控制器时出错。请确保该控制器具有无参数公共构造函数。]
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext-RequestContext,类型controllerType)+182
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext-RequestContext,类型controllerType)+80
System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext RequestContext,String controllerName)+74
ProcessRequestInit(HttpContextBase httpContext、IController和controller、IControllerFactory和factory)+232
System.Web.Mvc.c__显示类6.b__2()+49
System.Web.Mvc.c__显示类b`1.b__a()+13
System.Web.Mvc.SecurityUtil.b___0(操作f)+7
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(操作)+22
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Func`1 Func)+124
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,异步回调,对象状态)+98
System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext HttpContext,异步回调,对象状态)+50
System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.BeginProcessRequest(HttpContext上下文,AsyncCallback cb,Object extraData)+16
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+8970356
System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+184

您的问题与
操作结果
无关。您的
HomeController
没有无参数构造函数。

如果将控制器的构造函数与参数一起使用,则应根据您的逻辑创建或使用依赖项注入:或与IoC容器一起使用。

添加公共HomeController():this(new ISettings()){正如手动发布所建议的那样,由于我无法创建抽象类或接口(ISettings)的实例,gives不起作用@Niek de Klein,当然您应该传递一些
ISettings
的实现。你在程序中传递什么作为参数?我在帖子中编辑了它,代码来自HomeController,而不是我以前拥有的。@Niek de Klein,据我所知,你试图使用一些IoC容器(Autofac、Ninject、Windsor Castle、Unity或其他)。正确配置后,它将自动将
ISettings
解析为实现它的某个类。