J'ai installé Visual Studio 2013 et lorsque j'exécute mon application, j'obtiens l'erreur ci-dessous.
Je n'ai aucune idée de l'endroit où je dois initialiser cet objet.
Que faire?
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
C'est pour AlumCloud
c#
.net
asp.net-mvc-routing
Remplir la pile, c'est ce que je fais
la source
la source
GlobalConfiguration.Configure(Action<HttpConfiguration> configurationCallback)
on appellera après la configurationCallback.Si vous le faites à la fin de Application_Start, il sera trop tard, car WebApiConfig.Register a été appelé.
La meilleure façon de résoudre ce problème est d'utiliser une nouvelle méthode d'initialisation en remplaçant dans Global.asax:
par
la source
GlobalConfiguration.Configure(config => new WebApiConfig().Register(config));
En fait, j'ai eu cette erreur lorsque j'utilisais le routage d'attributs dans mon WebApi.
j'ai eu
au lieu de
pour mon itinéraire et j'ai obtenu cette erreur. J'avais simplement manqué la parenthèse bouclée de fermeture. Une fois que je l'ai rajouté, cette erreur ne s'est plus reproduite.
la source
C'est vieux, mais c'est le premier résultat sur google lors de la recherche de cette erreur. Après pas mal de recherches, j'ai pu comprendre ce qui se passait.
Signification: si vous venez d'un projet Mvc existant, tout ce que vous avez à faire est:
OU
Creuser plus profond
HttpConfiguration.Configuration a une propriété "Initializer" définie comme ceci:
HttpConfiguration.EnsureInitialized () exécute cette action et définit _initialized sur true
HttpConfiguration.MapAttributeRoutes appelle la méthode interne AttributeRoutingMapper.MapAttributeRoutes qui définit HttpConfiguration.Initializer
GlobalConfiguration.Configure exécute EnsureInitialized immédiatement après avoir appelé votre action:
N'oubliez pas que si vous vous heurtez à un mur, la source de asp.net est disponible à l' adresse http://aspnetwebstack.codeplex.com/SourceControl/latest
la source
J'ai eu un problème connexe. Parfois, un appel à
GlobalConfiguration.Configure
plusieurs reprises déclenche cette erreur. Pour contourner le problème, j'ai mis toute la logique d'initialisation de la configuration au même endroit.la source
Pour moi, le problème était que j'essayais d'utiliser des paramètres nommés pour les champs de chaîne de requête dans mes itinéraires:
Les champs de chaîne de requête sont automatiquement mappés aux paramètres et ne font pas réellement partie de la définition de l'itinéraire. Cela marche:
la source
Bien que la réponse ci-dessus fonctionne si cela n'est pas défini, dans mon cas, ce truc était déjà défini. Ce qui était différent, c'est que, pour l'une des API que j'avais écrites, j'avais préfixé la route avec un /. Exemple
.Changer ceci en
réparé pour moi
la source
HttpPrefix
décorateur, puis pour mon point final individuel j'ai eu le décorateur:[Route("/")]
. En passant simplement une chaîne vide dans l'itinéraire, le problème a été résolu.SI CETTE ERREUR SEMBLE ÊTRE VENUE "DE NULLE PART" , c'est-à-dire que votre application fonctionnait parfaitement bien pendant un certain temps, demandez-vous: ai-je ajouté une action à un contrôleur ou modifié des itinéraires avant de voir cette erreur?
Si la réponse est oui (et c'est probablement le cas), vous avez probablement fait une erreur dans le processus. Un formatage incorrect, copier / coller une action et oublier de s'assurer que les noms de point de terminaison sont uniques, etc., vous finirez tous ici. La suggestion de cette erreur sur la façon de la résoudre peut vous faire aboyer dans le mauvais arbre.
la source
Appel
avant
termine son exécution.
la source
J'ai eu cette erreur lorsque la version de Newtonsoft.Json était différente dans mon projet principal par rapport au projet d'assistance
la source
On obtient généralement cette exception lorsque les modèles de route dans "Attribute Routing" ne sont pas appropriés.
Par exemple, j'ai obtenu ceci lorsque j'ai écrit le code suivant:
Dans la syntaxe des contraintes de route {paramètre: contrainte}, la contrainte par défaut est de type chaîne . Inutile de le mentionner explicitement.
la source
J'ai commencé à avoir cette erreur un jour. Après avoir modifié notre application pour appeler,
EnsureInitialized()
j'ai pu voir la cause profonde.J'avais un attribut personnalisé, un filtre, sur une action. Cette classe d'attributs avait subi un changement radical dans le package NuGet dans lequel elle vit.
Même si j'avais mis à jour le code et tout compilé, le travailleur IIS local chargeait une ancienne DLL et ne trouvait pas de membre de classe lors de l'initialisation, lisant les attributs sur les actions, etc.
Pour une raison quelconque (peut-être en raison de la commande / lorsque notre journalisation est initialisée), cette erreur n'était pas détectable, laissant peut-être le WebAPI dans un état étrange, jusqu'à ce que j'aie ajouté
EnsureInitialized()
qui a attrapé l'exception et l'a fait apparaître.L'exécution d'un bon
bin
etobj
propre via un script pratique l'a résolu.la source
Dans mon cas, j'ai créé le service Web dans le projet A et l'ai démarré à partir du projet B et j'ai eu exactement cette erreur. Le problème était que certains fichiers .dll requis par A manquaient dans le dossier build-output de B. Assurez-vous que ces fichiers .dll sont disponibles corrigés.
la source
Dans mon cas, j'ai utilisé une entité comme paramètre de mon action que son «schéma» est manquant.
Mauvais attribut:
Correct :
la source