web-dev-qa-db-fra.com

Le type ou l'espace de noms IHttpActionResult introuvable

C'est la première fois que je crée une application API Web dans ASP.NET MVC4. J'ai ouvert un nouveau projet d'API Web et ajouté un nouveau contrôleur nommé "Produit". La fonction donnée ci-dessous montre un espace de noms d'erreur non trouvé.

public IHttpActionResult GetProduct(int id) 
{
    var product = products.FirstOrDefault((p) => p.Id == id);
    if (product == null)
    {
        return NotFound();
    }
    return Ok(product);
 }

Quelqu'un peut m'aider à résoudre ce problème?

57
BPX

Étant donné que vous utilisez Asp.Net 4.0, IHttpActionResult n'est pas disponible dans l'espace de noms System.Web.Http version 4.0. Vous devez donc mettre à jour votre espace de noms vers la version 5.0.0.0. Vous pouvez vérifier la version de votre espace de noms en cliquant avec le bouton droit de la souris sur Espace de noms System.Web.Http dans les références, puis sur Propriétés. Vous pouvez le mettre à jour en effectuant un clic droit sur votre projet de solution-> Gérer les packages NuGet pour Solution-> Rechercher Asp.Net WebAPI 2 -> Sélectionnez Asp.Net WebAPI 2 et cliquez sur Gérer. Aussi, vous pouvez vérifier si elle est disponible dans l'onglet de mise à jour, si elle est disponible dans l'onglet de mise à jour, vous pouvez mettre à jour à partir de là. Une fois que vous avez fait cela, confirmez la version en accédant aux propriétés de l’espace de noms System.Web.Http dans les références.

Cela fonctionne pour moi et j'espère que cela fonctionnera pour vous aussi.

Merci

94
Chandra Malla

J'ai eu un problème similaire lorsque j'ai extrait un projet de mon contrôle de source.

J'avais la référence à Microsoft ASP.NET Web API 2 dans le projet mais je ne pouvais toujours pas compiler le projet.

La solution consistait à réinstaller le package à l'aide de la console Package Manager:

PM> update-Package Microsoft.AspNet.WebApi –reinstall

35
user3392357

Pour résoudre l'erreur de référence IHttpActionResult, ajoutez une référence à l'aide de NuGet afin d'installer la lib. Web API2 Core. Dll

Dans l'explorateur de solutions dans les références, cliquez avec le bouton droit de la souris et sélectionnez Gérer les paquets de nugets. (sinon installez le nuget)

Dans la fenêtre de gestion des packages NuGet sur le côté gauche, cliquez en ligne puis, en haut à droite, recherchez API 2.1 et installez les bibliothèques principales de Microsoft ASP.NET Web API 2.1. (Une fois installé, le bouton d'installation deviendra une coche verte)

enter image description here

Après cela, le projet sera rechargé et, une fois reconstruit, l'erreur de référence IHttpActionResult sera résolue et le projet aboutira. Votre question était bonne et m'a aidé. J'espère que cette réponse aide!

20
Catto

Vérifiez avec ce lien pour obtenir l'espace de noms pour IHttpActionResult et tous.

Ce paquet contient tout ce dont vous avez besoin pour héberger l'API Web ASP.NET sur IIS. L'API Web ASP.NET est une infrastructure qui facilite la création de services HTTP qui atteignent un large éventail de clients, y compris les navigateurs et les appareils mobiles. L'API Web ASP.NET est une plate-forme idéale pour la création d'applications RESTful sur le .NET Framework.

Pour installer Microsoft ASP.NET Web API 2, exécutez la commande suivante dans la console du gestionnaire de packages ou gérez les packages NuGet.

PM> Install-Package Microsoft.AspNet.WebApi - Version 5.0.0

10
kasim

J'ai eu le même problème et la réinstallation va résoudre ce problème. Il suffit d'aller dans Outils> Gestionnaire de paquets NuGet> Console du gestionnaire de paquets dans Visual Studio 2013 et notez ce qui suit: -

PM> update-Package Microsoft.AspNet.WebApi –reinstall

Ensuite, nettoyez la solution et générez/reconstruisez la solution.

Remarque: Dans mon cas, le processus a explicitement extrait les fichiers Web.config et packages.config et a également supprimé le fichier dll System.Web.Http.

9
Kuntal Ghosh

Cette solution a fonctionné pour moi:
Outils -> Library Package Manager -> Package Manager Console, puis tapez:
Paquet d'installation Microsoft.AspNet.WebApi -Version 5.0.0
package de mise à jour Microsoft.AspNet.WebApi –reinstall
Référence: http://blog.bitlinkit.com/type-namespace-ihttpactionresult-not-found/

7
z0mbi3

Les fonctionnalités que vous essayez d'utiliser font partie de Web API 2. Étant donné que vous avez mentionné que vous utilisiez MVC 4, je suppose que vous souhaiterez mettre à niveau vos références à MVC 5 et à Web API 2.

En savoir plus sur ces fonctionnalités à l'adresse http://www.strathweb.com/2013/06/ihttpactionresult-new-way-of-creating-responses-in-asp-net-web-api-2/

6
Matthew K

Dans mon cas après la mise à jour System.Web.Http à la version 5.0.0.0, je devais redémarrer le IDE) afin de résoudre ce problème.

1
mouse m.d.

Utilisation de NuGet pour installer Web API2 Core lib. dll. Vous devrez peut-être mettre à jour Nuget avant d'installer Web API2 car certains composants de API2 ne sont pas compatibles avec l'ancien package Nuget. Je l'avais fait de cette façon et le problème était résolu.

1
anhdktk

Ce problème semble se produire dans 2 projets récents. J'ai commencé à utiliser Visual Studio 2015. Project est un site Web ASP.Net MVC 5 avec des composants mvc et web api. Après avoir exécuté les mises à jour et nettoyé les paquets de nuget indésirables, j'ai copié du code standard à partir d'un autre projet similaire et le même problème avec IHttpActionResult et RouteAttribute n'a pas été trouvé.

Le problème était dû à une version incorrecte de System.Web.Http.dll référencée dans les références de projet. Par défaut, la version GAC système de l’Assembly est utilisée.

Pour résoudre ce problème, supprimez simplement cette référence et ajoutez une référence au même assemblage dans le dossier du package Nuget: [dossier du projet]\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http .dll

Vous devez d'abord vérifier que votre version de Microsoft.AspNet.WebApi.Core a été mise à jour.

0
kas