Ich habe Visual Studio 2013 installiert und beim Ausführen meiner App wird der folgende Fehler angezeigt.
Ich habe keine Ahnung, wo ich dieses Objekt initialisieren soll.
Was ist zu tun?
Server Error in '/' Application.
The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[InvalidOperationException: The object has not yet been initialized. Ensure that HttpConfiguration.EnsureInitialized() is called in the application's startup code after all other initialization code.]
System.Web.Http.Routing.RouteCollectionRoute.get_SubRoutes() +101
System.Web.Http.Routing.RouteCollectionRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) +63
System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext) +107
System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) +233
System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +60
System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +82
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408
Dies ist für AlumCloud
c#
.net
asp.net-mvc-routing
Den Stapel zu füllen ist das, was ich tue
quelle
quelle
GlobalConfiguration.Configure(Action<HttpConfiguration> configurationCallback)
wird nach dem configurationCallback aufgerufen.Wenn Sie dies am Ende von Application_Start tun, ist es zu spät, da WebApiConfig.Register aufgerufen wurde.
Der beste Weg, dies zu beheben, ist die Verwendung einer neuen Initialisierungsmethode durch Ersetzen in Global.asax:
durch
quelle
GlobalConfiguration.Configure(config => new WebApiConfig().Register(config));
Ich habe diesen Fehler tatsächlich erhalten, als ich das Attribut-Routing in meinem WebApi verwendet habe.
ich hatte
anstatt
für meine Route und bekam diesen Fehler. Ich hatte einfach die schließende geschweifte Klammer verpasst. Nachdem ich es wieder hinzugefügt habe, ist dieser Fehler nicht mehr aufgetreten.
quelle
Dies ist alt, aber das erste Ergebnis bei Google bei der Suche nach diesem Fehler. Nach einigem Graben konnte ich herausfinden, was los war.
Das heißt: Wenn Sie aus einem vorhandenen Mvc-Projekt stammen, müssen Sie lediglich Folgendes tun:
ODER
Tiefer Graben
HttpConfiguration.Configuration hat eine "Initializer" -Eigenschaft, die wie folgt definiert ist:
HttpConfiguration.EnsureInitialized () führt diese Aktion aus und setzt _initialized auf true
HttpConfiguration.MapAttributeRoutes ruft die interne Methode AttributeRoutingMapper.MapAttributeRoutes auf, mit der HttpConfiguration.Initializer festgelegt wird
GlobalConfiguration.Configure führt EnsureInitialized unmittelbar nach dem Aufrufen Ihrer Aktion aus:
Vergessen Sie nicht, dass die Quelle für asp.net unter http://aspnetwebstack.codeplex.com/SourceControl/latest verfügbar ist, wenn Sie auf eine Wand stoßen
quelle
Ich hatte ein ähnliches Problem. Manchmal
GlobalConfiguration.Configure
löst ein mehrmaliger Aufruf diesen Fehler aus. Um dieses Problem zu umgehen, habe ich die gesamte Konfigurationsinitialisierungslogik an einem Ort zusammengefasst.quelle
Für mich bestand das Problem darin, dass ich versuchte, benannte Parameter für Abfragezeichenfolgenfelder in meinen Routen zu verwenden:
Abfragezeichenfolgenfelder werden automatisch Parametern zugeordnet und sind nicht Teil der Routendefinition. Das funktioniert:
quelle
Obwohl die obige Antwort funktioniert, wenn dies nicht festgelegt ist, wurde dieses Zeug in meinem Fall bereits festgelegt. Was anders war, war, dass ich für eine der APIs, die ich geschrieben hatte, der Route ein / vorangestellt hatte. Beispiel
Ändern Sie dies auf
habe es für mich behoben
quelle
HttpPrefix
Dekorateur hatte und dann für meinen individuellen Endpunkt den Dekorateur :[Route("/")]
. Durch einfaches Übergeben eines leeren Strings in der Route wurde das Problem behoben.WENN DIESER FEHLER "AUS NIRGENDWO" KOMMT , dh Ihre App eine Weile einwandfrei funktioniert hat, fragen Sie sich: Habe ich einem Controller eine Aktion hinzugefügt oder Routen geändert, bevor dieser Fehler angezeigt wurde?
Wenn die Antwort ja lautet (und wahrscheinlich auch), haben Sie wahrscheinlich einen Fehler gemacht. Falsches Formatieren, Kopieren / Einfügen einer Aktion und Vergessen, um sicherzustellen, dass die Endpunktnamen eindeutig sind usw. führen Sie hierher. Der Vorschlag, den dieser Fehler bei der Behebung macht, kann dazu führen, dass Sie den falschen Baum bellen.
quelle
Anruf
Vor
schließt seine Ausführung ab.
quelle
Ich habe diesen Fehler erhalten, als die Version von Newtonsoft.Json in meinem Hauptprojekt anders war als im Hilfsprojekt
quelle
Diese Ausnahme tritt normalerweise auf, wenn Routenvorlagen in "Attribut-Routing" nicht korrekt sind.
Zum Beispiel habe ich das bekommen, als ich den folgenden Code geschrieben habe:
In der Syntax für Routenbeschränkungen {Parameter: Einschränkung} ist die Einschränkung standardmäßig vom Typ Zeichenfolge . Keine Notwendigkeit, es explizit zu erwähnen.
quelle
Eines Tages bekam ich diesen Fehler. Nachdem ich unsere App geändert hatte, um anzurufen,
EnsureInitialized()
konnte ich die Grundursache erkennen.Ich hatte ein benutzerdefiniertes Attribut, einen Filter für eine Aktion. Diese Attributklasse hatte eine grundlegende Änderung im NuGet-Paket vorgenommen, in dem sie lebt.
Obwohl ich den Code aktualisiert und alles kompiliert hatte, lud der lokale IIS-Worker eine alte DLL und fand während der Initialisierung kein Klassenmitglied, las Attribute für Aktionen usw.
Aus irgendeinem Grund (möglicherweise aufgrund der Reihenfolge / bei der Initialisierung unserer Protokollierung) war dieser Fehler nicht erkennbar, sodass die WebAPI möglicherweise in einem seltsamen Zustand blieb, bis ich hinzugefügt hatte,
EnsureInitialized()
was die Ausnahme abfing und auftauchte.Durch eine ordnungsgemäße
bin
undobj
saubere Ausführung über ein handliches Skript wurde das Problem behoben.quelle
In meinem Fall habe ich den Webservice in Projekt A erstellt und von Projekt B aus gestartet, und ich habe genau diesen Fehler erhalten. Das Problem war, dass einige DLL-Dateien, die von A benötigt werden, im Build-Output-Ordner von B fehlten. Stellen Sie sicher, dass diese DLL-Dateien verfügbar sind, um das Problem zu beheben.
quelle
In meinem Fall habe ich eine Entität als Parameter meiner Aktion verwendet, deren 'Schema' fehlt.
Falsches Attribut:
Richtig :
quelle