web-dev-qa-db-fra.com

HttpUtility non reconnu dans .Net 4.5

J'ai développé une application WinForm avec le framework cible défini sur .net 4.0, maintenant je souhaite ajouter à un projet qui a son framework cible défini sur .net 4.5. Après avoir ajouté l'application WinForm 4.0 à mon projet 4.5, je reçois toujours une erreur sur mon objet HttpUtility.

 data += "&batch_data=" + HttpUtility.UrlEncode(batch, System.Text.Encoding.GetEncoding("ISO-8859-1"));

"Le nom 'HttpUtility' n'existe pas dans le contexte actuel"

J'ai inclus l'espace de noms System.Web où se trouve HttpUtility.

Erreur Visual Studio:

CS0234 The type or namespace name 'HttpUtility' does not exist in the namespace 'System.Web' (are you missing an Assembly reference?)
20
Marnus_Steyn

Le problème est ailleurs.

Comme vous pouvez le voir dans MSDN la classe HttpUtility est présente dans System.Web dans .NET Framework 4.5.

Vous ciblez probablement le profil client: ciblez le framework complet dans les propriétés du projet. Autrement:

  • soit vous n'avez pas ajouté le droit en utilisant l'instruction using System.Web;
  • ou vous n'avez pas ajouté la référence à System.Web.dll dans le projet.
45
giammin

WebUtility

Vous avez également une autre possibilité: utilisez la classe WebUtility . La classe WebUtility est recommandée par Microsoft lui-même et doit être utilisée en dehors des applications Web.

Comme la classe HttpUtility, elle vous offre également la possibilité d'encoder et de décoder des URL.

De cette façon, vous n'avez pas de problèmes à importer la bibliothèque dans votre projet ou à définir des profils spécifiques.


De la documentation ( Source )

La classe HttpUtility est utilisée en interne par la classe HttpServerUtility, dont les méthodes et propriétés sont exposées via l'objet serveur ASP.NET intrinsèque. En outre, la classe HttpUtility contient des méthodes utilitaires d'encodage et de décodage qui ne sont pas accessibles à partir du serveur.

Pour encoder ou décoder des valeurs en dehors d'une application Web, utilisez la classe WebUtility.

5
kamwo

La classe HttpUtility existe à partir de .NET 1.1, donc je pense qu'il n'est pas possible pour les projets réguliers de "ne pas le voir", tant que vous avez inclus une référence à System.Web.

Vous utilisez peut-être un PCL ( Bibliothèque de classes portable ), qui utilise une version allégée du cadre pris en charge sur les plates-formes que vous avez sélectionnées, comme les applications du Windows Store, Windows Phone, Silverlight, etc.

3
Patrick Hofman

J'espère que ce lien vous aidera. http://msdn.Microsoft.com/en-us/library/system.web.httputility (v = vs.110) .aspx Dot net framework 4.5 prend en charge HttpUtility tel qu'il est sous System.Web espace de noms. Ajout également d'une référence System.Web, sans référence System.Web.Extensions dans votre projet. Si cela ne fonctionne pas, supprimez l'existant et ajoutez une nouvelle référence de System.Web dans le projet. Vérifiez également quel framework il cible doit être .NET Framework 4 ou 4.5 sans client.

1
Rahul