L'API Web Attribut Itinéraires en MVC 5 exception: L'objet n'a pas encore été initialisé. S'assurer que HttpConfiguration.EnsureInitialized()
Sur un MVC 5 avec l'API Web j'ai le texte suivant, en utilisant uniquement l'Attribut Routes:
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
RouteTable.Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.([iI][cC][oO]|[gG][iI][fF])(/.*)?" }); //TODO: Check for Apple Icons
RouteTable.Routes.MapMvcAttributeRoutes();
GlobalConfiguration.Configuration.MapHttpAttributeRoutes();
AreaRegistration.RegisterAllAreas();
Dans le RouteTable tous les MVC itinéraires ont été créés ... Mais pas l'API ...
J'ai vérifié le RouteTable.Les Routes et je vois une exception:
L'objet n'a pas encore été initialisé. S'assurer que HttpConfiguration.EnsureInitialized() est appelée au démarrage de l'application, le code après que tous les autres code d'initialisation.
au Système.Web.Http.Le routage.RouteCollectionRoute.get_SubRoutes() à
Système.Web.Http.Le routage.RouteCollectionRoute.GetEnumerator() à
Système.Linq.SystemCore_EnumerableDebugView`1.get_Items()
Pour tester cela, j'ai ajouté seulement deux Api Web des actions pour le projet:
[RoutePrefix("api")]
public class StatApiController : ApiController {
[Route("stats/notescreateddaily"), HttpGet]
public IHttpActionResult NotesCreatedDaily() {
//Some code
}
[Route("stats/userscreateddaily"), HttpGet]
public IHttpActionResult UsersCreatedDaily() {
//Some code
}
}
Suis-je raté quelque chose?
Merci,
Miguel
OriginalL'auteur Miguel Moura | 2013-11-09
Vous devez vous connecter pour publier un commentaire.
La solution est en fait de remplacer:
Par:
Qui a été un changement dans l'API Web 2.
GlobalConfiguration.Configure
serait en interne appelEnsureInitialized
sur GlobalConfiguration et vous serait de voir des résultats inattendus si vous vous inscrivez après l'appel àGlobalConfiguration.Configure
Merci beaucoup. Si utile!
Toujours utile! Veuillez cocher ce que l'on a accepté la réponse de sorte qu'il est plus facile à trouver.
OriginalL'auteur Miguel Moura
La solution est d'appeler
GlobalConfiguration.Configuration.EnsureInitialized();
après tout, votre Web API liées à la configuration est faite, mais je suis curieux de savoir pourquoi vos inscriptions ressembler à ceci...Ce type de modèle de projet avez-vous utilisé pour créer le MVC5 projet?...Les modèles prédéfinis fournis avec Visual Studio possède une structure qui permet de minimiser l'itinéraire de la commande de problèmes et qui seraient donc vous recommandons de les utiliser, de sorte que vous vous demandez pourquoi votre configuration de la structure ressemble à ça...OriginalL'auteur Kiran Challa
Je vais avoir le même problème après je mettre à jour tous mes projet de services web à l'aide de ASP.Net l'API Web 4.0 à 4.5 et à l'aide de l'API Web 2.2 avec la Scro de la bibliothèque. J'ai réussi à résoudre le problème. Ce que j'ai fait était en éliminant ou en commentant la déclaration suivante à la RouteConfig.cs fichier à App_Start dossier:`
Sur mon Global.asax.cs dossier, je suis l'aide de l'ancien routage d'enregistrement
Voici la raison:
Attribut de Routage dans l'API Web 2
Remarque: la Migration à Partir de l'API Web 1
Avant API Web 2, Web API des modèles de projet a généré un code comme ceci:
Si l'attribut de routage est activé, ce code va lever une exception. Si vous mettez à niveau une API Web du projet à l'utilisation de l'attribut de routage, assurez-vous de mettre à jour ce code de configuration à la suivante:
Je suis à l'aide de l'ancienne route et j'ai décidé de ne pas utiliser d'attribut de routage. Sortez ainsi QUE la déclaration de
OriginalL'auteur Snow Attitudes