Stellen Sie sicher, dass der controller hat einen parameterlosen public-Konstruktor

Bekomme ich diesen Fehler

Ist ein Fehler aufgetreten beim Versuch, einen Domänencontroller zu erstellen vom Typ 'AnalyticController'. Stellen Sie sicher, dass der controller hat einen parameterlosen public-Konstruktor.

Code funktioniert in der Testumgebung aber nicht auf den Produktions-server.

Jede Idee, was könnte das problem verursachen?

Dies ist mein controller

public class AnalyticController : ApiController
{
    private AnalyticBLL analyticBLL = new AnalyticBLL();

    //POST api/status
    public void Post(AnalyticDTO analyticDTO)
    {
        if (!analyticBLL.Register(analyticDTO))
            helpers.BusinessLayer.CreateResponseException(analyticBLL.Errors);   
    }
}
  • Ihre Steuerung (wie hier gepostet), hat einen parameterlosen public-Konstruktor. Ihre real-controller hat wahrscheinlich einen anderen Konstruktor, nicht hier gepostet, und als ein Ergebnis der parameterlosen default-Konstruktor wird nicht generiert.
  • ApiController hat einen protected-Konstruktor, sondern die erbende Klasse scheint nicht zu wissen, dass - msdn.microsoft.com/en-us/library/...
  • Die erbende Klasse weiß über den Konstruktor in der Basisklasse. Wenn Sie es nicht sehen konnte, jeder Konstruktor in der Basisklasse, wäre es nicht einmal möglich sein, zu Erben von der Basisklasse (da die Instanz-Konstruktor(en) muss die Kette einer (vorhandenen und sichtbar) - Konstruktor in der Basisklasse). (Abgesehen von den pathologischen Fall, wo alle Instanz-Konstruktoren Kette von Konstruktoren in dieser Klasse mit :this(...) in einer zyklischen Art und Weise.)
  • Absolut einverstanden, aber komischerweise die Lösung funktioniert für die OP, auch wenn es dies tun sollte standardmäßig.
  • Nicht sicher, was du meinst. Als Kris Vandermotten gesagt, das Original-Plakat einige explizite Instanz-Konstruktor, der unterdrückt die Generierung eines "automatischen" public default-Konstruktor. Wenn du weglassen, die Kette-andere- - Konstruktor-syntax in einer Instanz-Konstruktor, das entspricht : base().
InformationsquelleAutor GibboK | 2014-06-03
Schreibe einen Kommentar