2011-02-11 16 views
13

Tengo una cadena que me gustaría codificar en el formato de URL estándar. Por lo que he encontrado, debería poder hacer esto a través del método httpUtility.urlEncode, pero no parece tenerlo disponible.¿Por qué no puedo encontrar o usar UrlEncode en Visual Studio 2010?

He añadido "usar" las referencias tanto a System.Web como a System.Net en vano. También he visto otras referencias a server.urlEncode entre otras variantes, pero no veo el método en ninguna parte.

Estoy usando la última versión de C# en Visual Studio 2010. ¿Es el método llamado algo diferente en esta versión, oculto en otro lugar, o estoy completamente fuera de base?

Respuesta

28

De forma predeterminada, los proyectos nuevos en Visual Studio 2010 tienen como objetivo .NET Framework 4.0 Client Profile, que no incluye el ensamblaje System.Web.

Puede cambiar la versión del marco que su proyecto se destina a las propiedades de su proyecto. En la pestaña "Aplicación", seleccione ".NET Framework 4.0" en el cuadro combinado "Marco de destino".

Luego, asegúrese de haber agregado una referencia al System.Web usando el cuadro de diálogo "Agregar referencia".

Por último, añadir un using directive a la parte superior de su clase para el espacio de nombres System.Web:

using System.Web; 


Encontrarás las distintas sobrecargas del UrlEncode method en la clase HttpUtility. Código de ejemplo:

HttpUtility.UrlEncode("http://www.google.com/"); 
+0

Como dije en mi pregunta, lo hice; aunque debería tener el código resaltado para que sea más visible. – Sootah

+0

@Sootah: Olvidaste decirnos qué tipo de proyecto creaste. –

+0

Solo una aplicación WinForms estándar. – Sootah

2

No se puede nombrar de manera diferente ya que Visual Studio no proporciona los nombres de clase o método, el .NET framework sí lo hace.

Todo lo que puedo decirle es que el System.Web. HttpUtility AND System.Web. Las clases HttpServerUtility contienen un método llamado UrlEncode(string).

+0

Contienen [varias otras sobrecargas] (http://msdn.microsoft.com/en-us/library/s2x4538s.aspx) de ese método, también. Y 'HttpServerUtility.UrlEncode' simplemente llama' HttpUtility.UrlEncode' internamente; son el mismo método. –

+0

Todo lo que System.Web me da son: AspNetHostingPermission, AspNetHostingPermissionAttribute, y AspNetHostingPermissionLevel – Sootah

+0

Eso indicaría bastante que le falta una referencia a System.Web dll, o que está apuntando al perfil incorrecto. –

0

Debido a que sólo se ve AspNetHostingPermission, AspNetHostingPermissionAttribute y AspNetHostingPermissionLevel, que sospechan fuertemente (como los otros hombres) que se está perdiendo una referencia.

Lo mejor que puede hacer es comenzar un nuevo proyecto, porque es bastante complicado agregar/eliminar referencias sin arruinar todo el proyecto.

How to: Add or Remove References in Visual Studio (MSDN) muestra cómo agregar/eliminar referencias. En su caso, debe verificar/agregar la referencia System.Web.

1

Sí, agregando la referencia fue mi respuesta. Pero asegúrese de verificar dos veces el proyecto, que está dentro, si tiene más de 1 proyecto en su solución. Tuve una solución con 3 proyectos. System.Web se agregó a 2 proyectos pero no al 3er.

Pasé una hora tratando de descubrir por qué no podía usar HttpUtility ya que era una referencia en el proyecto principal. Pero no revisé los subproyectos de la Solución.

Espero que ayude a alguien.

+0

Tuve el mismo problema. El Framework fue 4.0 pero el IDE no pudo reconocer el método System.Net.WebUtility.UrlEncode. Lo hizo solo después de que agregué System.web.dll a todos los proyectos dependientes y los reconstruí. Extraño... – dmihailescu

1

Si su proyecto tiene como objetivo ".NET Framework X Client Profile", no puede usar "System.Web", pero puede usar "Uri.EscapeUriString | Uri.UnEscapeUriString" en su lugar.

3

En .Net 4.5 puede (¿debería ?, "por favor use", dice un comentario de Katana) usar el método System.Net.WebUtility.UrlEncode.

Cuestiones relacionadas