Ich verwende DryIOC.WebAPI, um meine APIControllers aufzulösen.DryIOC WebAPI-Ausweichcontroller
WebAPI Config ist somit:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
config.EnableCors();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Startup.IocContainer.WithWebApi(config);
Startup.IocContainer.RegisterWebApiControllers(config);
}
}
Seine Arbeiten groß, bis ich eine Zuordnung in der IOC-Container erstellen vergessen. In diesem Fall kann der Dependency-Resolver keine Instanz des APIControllers mit DryIOC erstellen.
Wenn dies passiert, greift es auf den Standard-WebAPI-Resolver zurück, der dann mit dem Fehler "Kein Standardkonstruktor" überbrückt wird.
Dies ist ein unerwünschtes Verhalten für mich. Wenn die DryIOC-Auflösung fehlschlägt, möchte ich, dass die Dinge dort stehenbleiben - kein Fallback auf die Standardimplementierung und keine ungenaue Meldung über keinen Standardkonstruktor. Ich möchte wissen, welche Typen DryIOC nicht beheben kann, damit ich es beheben kann.
Wie kann ich das erreichen?
Sie könnten den Standard-Resolver selbst außer Kraft setzen, bevor Sie ihn an DryIOC übergeben und dort stoppen – Nkosi
Ich habe eine DryIOC-Pull-Anforderung hier gemacht: https://bitbucket.org/dadhi/dryioc/pull-requests/15/changed-the- Auflösung-Verhalten-zu-werfen/diff – reach4thelasers
machen diese Änderung in der DryIOC Rahmen ist ziemlich extrem. Sie sollten die Erweiterbarkeit der Web-API nutzen. Nachdem ich gesehen habe, wie die DryIOC-Quelle den Standard-Resolver ersetzt, anstatt ihn zu umbrechen, bearbeite ich meine Antwort, um zu zeigen, wie Sie den DryIOCResover umhüllen und den gewünschten Fehler werfen können – Nkosi