No se puede utilizar Server.MapPath

111

¿Qué debo hacer para que Server.MapPathfuncione?
yo tengousing System.Web;

¿Qué más? Cuando escribo, Serverno hay una opción de resultado rápido (intelli-sense) para Server.

¿Alguna ayuda?

a1204773
fuente
1
Necesitas dar más información. ¿Qué tipo de proyecto es este? ¿Por qué quiere ejecutar Server.MapPath? ¿Es este un proyecto de formularios web y está escribiendo código en una subclase de página o en una función de renderizado de ASPX?
Dai
C # Winforms ... quiero que compruebe la disponibilidad de archivos en el servidor
a1204773

Respuestas:

286

puedes intentar usar esto

    System.Web.HttpContext.Current.Server.MapPath(path);

o usar HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);
DotNetUser
fuente
1
No funcionan .... Error 1 El tipo o nombre del espacio de nombres 'HttpContext' no existe en el espacio de nombres 'System.Web' (¿le falta una referencia de ensamblado?) ... Error 2 El tipo o nombre del espacio de nombres 'Hosting' no existe en el espacio de nombres 'System.Web'
a1204773
parece que está utilizando winforms, es posible que desee ver este enlace y luego debugging.com/bug/18951
DotNetUser
4
Yo también, HostingEnvironment.MapPath funcionó y lo estoy usando fuera de un controlador.
Lucas
En primer lugar, su proyecto debe hacer referencia a System.Web.dll y funcionará
ihebiheb
¿Cómo conseguir leer un archivo presente en este directorio "~ / AppData / Roaming"?
Murlidhar Fichadia
14

Su proyecto necesita hacer referencia al ensamblaje System.Web.dll. El servidor es un objeto de tipo HttpServerUtility. Ejemplo:

HttpContext.Current.Server.MapPath(path);
Leandro Gomide
fuente
3
No puedo encontrar esa referencia. Encontré solo estos dos: System.Web.ApplicationServices, System.Web.Services ....
a1204773
4

System.Web.HttpContext.Current.Server.MapPath("~/") da nulo si lo llamamos desde un hilo.

Entonces, intente usar

System.Web.Hosting.HostingEnvironment.MapPath("~/")

Ravindra Singh Chhabra
fuente
1

Primero agregue una referencia a System.web, si no la tiene. Hazlo en la carpeta Referencias .

Luego puedes usar Hosting.HostingEnvironment.MapPath(path);

jdisla
fuente
1
bool IsExist = System.IO.Directory.Exists(HttpContext.Current.Server.MapPath("/UploadedFiles/"));
if (!IsExist)
    System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath("/UploadedFiles/"));

StreamWriter textWriter = File.CreateText(Path.Combine(HttpContext.Current.Server.MapPath("/UploadedFiles/") + "FileName.csv"));
var csvWriter = new CsvWriter(textWriter, System.Globalization.CultureInfo.CurrentCulture);
csvWriter.WriteRecords(classVM);
usuario13048334
fuente
Las respuestas de solo código se consideran de baja calidad: asegúrese de proporcionar una explicación de lo que hace su código y cómo resuelve el problema. Ayudará tanto al autor de la pregunta como a los futuros lectores si puede agregar más información en su publicación. Ver Explicación de respuestas completamente basadas en código
Calos
0

Intente agregar System.Webcomo referencia a su proyecto.

jabu.hlong
fuente
0

Sé que esta publicación tiene algunos años, pero lo que hago es agregar esta línea a la parte superior de su clase y aún podrá utilizar Server.MapPath

Dim Server = HttpContext.Current.Server

O puedes hacer una función

Public Function MapPath(sPath as String)
    return HttpContext.Current.Server.MapPath(sPath)
End Function

Mi objetivo es facilitar las cosas. También lo he agregado a mi clase de Utilidades en caso de que me vuelva a encontrar con esto.

Guy Cothal
fuente