2010-08-28 17 views
6

Solía ​​código de here y me sale el siguiente error: No se puede utilizar HttpContext.Current.Server.MapPath()No se puede encontrar HttpContext en .NET 3.5 y Visual Studio 2008

En Visual Studio 2008 hace el ContextMenuEntry "resolver" ayudarle cuando tienes referencias faltantes?

Ya descubrí que HttpContext no es miembro de System.Web en mi IDE. De acuerdo con Ayuda> Información, estoy usando .NET 3.5 SP1.

¿Cómo puedo obtener esa ejecución?

¿Cómo reaccionas normalmente en esta situación? ¿Qué cosas buscas en msdn.com?

+0

Gracias a todos por el ayuno y respuestas altamente cualificadas, ¡especialmente Timwi y Guffa! – OneWorld

+0

I Ahora siempre uso ReSharper de JetBrains para "resolver" estos problemas (según la respuesta de David Culp). Con este complemento, puede agregar funciones de Visual Studio que sean de sentido común en Eclipse. – OneWorld

Respuesta

18

Lo que haría en esa situación es buscar en MSDN (o Google) para HttpContext. Hice eso, y dice que está en System.Web. Así que asegúrese de que su proyecto tenga una referencia al System.Web.

“Add Reference” menu item

“System.Web” in the Add Reference dialog

... y luego parece que funciona:

HttpContext is now available.

+0

¡Rock! Gracias por el molde de pantalla;) Pensé que escribir "Using System.Web" es suficiente. Tal vez tenga que pasar por este menú para establecer el uso de directivas. O el IDE no reconoció el código copiado. magia de alguna manera, porque nada ha cambiado en mi archivo;) – OneWorld

+0

@user: Si Timwi le ayudó a salir, asegúrese de marcar esto como una respuesta. Tenga en cuenta que las referencias de ensamblaje y las instrucciones de uso son animales diferentes. Las referencias de ensamblado determinan qué código está disponible para que consuma su aplicación. Las instrucciones de uso del espacio de nombres proporcionan solo una abreviatura conveniente para referirse a las clases sin su nombre completo calificado para espacio de nombres. Descubrirá que agregar referencias cambiará solo su archivo csproj/vbproj. – kbrimington

+0

@ user433718: Además de lo @kbrimington dicho anteriormente, también permítanme señalar que el nombre de la asamblea no siempre es el mismo que el nombre de espacio de nombres (que hace que sea muy confuso). Por ejemplo, muchas cosas de WPF están en el ensamblado * PresentationCore * pero en el espacio de nombres * System.Windows.Media *. – Timwi

0

intenta agregar una referencia a System.Web en su proyecto.

HttpContext es miembro de System.Web.

http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx

+0

ya tenía "Uso System.Web" Pero cuando trato de escribir "Uso System.Web.HttpContext" dice "HttpContext" no se encuentran en el espacio de nombres "System.Web" También probé "System.Web.HttpContext.Current.Server.MapPath()" en el código. En este punto, Visual Studio volvió a decir "no en el espacio de nombres ..." – OneWorld

+0

@ user433718: No se puede poner '' HttpContext' en su declaración using', ya que es una clase, no un espacio de nombres. – Guffa

+0

El IDE no puede detectar automáticamente el espacio de nombres si no se hace referencia al archivo DLL. Si desea poder hacer eso incluso con las DLL no referenciadas, no creo que sea posible. –

2

Usted puede mirar en el documentation para la clase HttpContext, y le dice que está en el espacio de nombres System.Web, en la biblioteca System.Web.dll.

lo tanto, para usarla es necesario una referencia a la biblioteca System.Web.dll, y que o bien necesitan una declaración using System.Web; o bien utiliza el nombre de modo llenado cualificado System.Web.HttpContext.Current.Server.MapPath.

Sin embargo, ¿está seguro de que desea utilizar el método MapPath? El método obtiene la ruta física de una referencia web a un archivo. Si la ruta a su archivo CSV es una referencia web, por ejemplo "/data/items.csv", entonces quiere usar el método MapPath, pero si tiene una ruta física como por ejemplo "C:\mydata\items.csv", entonces no desea convertirla.

Además, el MapPath solo funciona si realmente está en una aplicación web, donde hay un contexto HTTP.

+0

Gracias por este comentario. Voy a investigar eso. No sabía eso antes. Solo quería que funcionara de alguna manera ... – OneWorld

+0

¡Sí, incluso no necesito este código! *¡Jaja gracias! Estoy seguro de que esta habría sido mi próxima pregunta;) – OneWorld

1

Timwi tiene razón, pero para completar. No, VS no tiene la capacidad 'Solve' integrada, sin embargo, esta funcionalidad ha sido parcialmente agregada por algunos complementos. Por ejemplo, Resharper agregará la opción para agregar la referencia y usarla cuando sea necesario, pero tiene que haber sido referenciada anteriormente en la solución para que no resuelva el problema de búsqueda inicial.

1

Fue un caso simple de no usar el marco adecuado, es decir, la versión completa de grasa en lugar de la versión 'ligera' predeterminada.

Haga clic derecho sobre el proyecto y luego en Propiedades y asegúrese de que la versión completa del último marco se selecciona es decir, 'Framework 4' , no' .NET Framework 4 Client Profile'

Cuestiones relacionadas