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?


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);

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);

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("~/")


1

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

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


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);

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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.