Não é possível usar Server.MapPath

111

O que devo fazer para dar certo Server.MapPath?
eu tenhousing System.Web;

o quê mais? Quando digito, Servernão há opção de resultado rápido (intelli-sense) para Server.

Qualquer ajuda?

a1204773
fonte
1
Você precisa fornecer mais informações. Que tipo de projeto é esse? Por que você deseja executar Server.MapPath? Este é um projeto de formulários da web e você está escrevendo código em uma subclasse de página ou em uma função de renderização ASPX?
Dai
C # Winforms .. quero verificar a disponibilidade de arquivos no servidor
a1204773

Respostas:

286

você pode tentar usar isso

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

ou usar HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);
DotNetUser
fonte
1
Eles não estão funcionando ... Erro 1 O tipo ou nome de namespace 'HttpContext' não existe no namespace 'System.Web' (falta uma referência de assembly?) ... Erro 2 O tipo ou nome de namespace 'Hosting' não existe no namespace 'System.Web'
a1204773
parece que você está usando winforms, você pode querer ver este link então debugging.com/bug/18951
DotNetUser
4
Eu também, HostingEnvironment.MapPath funcionou e estou usando fora de um controlador.
Lucas,
Em primeiro lugar, seu projeto precisa fazer referência a System.Web.dll e ele funcionará
ihebiheb
Como ler um arquivo presente neste diretório "~ / AppData / Roaming"?
Murlidhar Fichadia
14

Seu projeto precisa fazer referência ao assembly System.Web.dll. O servidor é um objeto do tipo HttpServerUtility. Exemplo:

HttpContext.Current.Server.MapPath(path);
Leandro Gomide
fonte
3
Não consigo encontrar essa referência, encontrei apenas estes dois: System.Web.ApplicationServices, System.Web.Services ....
a1204773
4

System.Web.HttpContext.Current.Server.MapPath("~/") dá null se o chamarmos de um thread.

Então, tente usar

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

Ravindra Singh Chhabra
fonte
1

Primeiro adicione uma referência a System.web, se não tiver. Faça isso na pasta Referências .

Você pode então usar Hosting.HostingEnvironment.MapPath(path);

jdisla
fonte
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);
user13048334
fonte
Respostas somente de código são consideradas de baixa qualidade: certifique-se de fornecer uma explicação sobre o que seu código faz e como ele resolve o problema. Ajudará tanto o autor da pergunta quanto os futuros leitores se você puder adicionar mais informações em sua postagem. Consulte Explicando respostas inteiramente baseadas em código
Calos,
0

Tente adicionar System.Webcomo referência ao seu projeto.

jabu.hlong
fonte
0

Eu sei que este post tem alguns anos, mas o que eu faço é adicionar esta linha ao topo da sua classe e você ainda será capaz de usar Server.MapPath

Dim Server = HttpContext.Current.Server

ou você pode fazer uma função

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

Meu objetivo é tornar as coisas mais fáceis. Também o adicionei à minha classe Utilitários, para o caso de encontrar novamente.

Guy Cothal
fonte