Impossibile utilizzare Server.MapPath


111

Cosa devo fare per far Server.MapPathfunzionare?
io housing System.Web;

cos'altro? Quando digito Servernon esiste un'opzione di risultato rapido (intelli-sense) per Server.

Qualsiasi aiuto?


1
È necessario fornire ulteriori informazioni. Che tipo di progetto è questo? Perché vuoi eseguire Server.MapPath? È un progetto di moduli web e stai scrivendo codice in una sottoclasse Page o in una funzione di rendering di ASPX?
Dai

C # Winforms .. voglio che controlli la disponibilità dei file sul server
a1204773

Risposte:


286

puoi provare a usarlo

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

o utilizzare HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);

1
Non funzionano ... Errore 1 Il tipo o il nome dello spazio dei nomi "HttpContext" non esiste nello spazio dei nomi "System.Web" (manca un riferimento all'assembly?) ... Errore 2 Il tipo o il nome dello spazio dei nomi "Hosting" non esiste nello spazio dei nomi "System.Web"
a1204773

sembra che tu stia usando winforms, potresti voler vedere questo link quindi debugging.com/bug/18951
DotNetUser

4
Anche io, HostingEnvironment.MapPath ha funzionato e lo sto usando al di fuori di un controller.
Luca

Prima di tutto il tuo progetto deve fare riferimento a System.Web.dll e funzionerà
ihebiheb

Come leggere un file presente in questa directory "~ / AppData / Roaming"?
Murlidhar Fichadia

14

Il progetto deve fare riferimento all'assembly System.Web.dll. Il server è un oggetto di tipo HttpServerUtility. Esempio:

HttpContext.Current.Server.MapPath(path);

3
Non riesco a trovare tale riferimento, ho trovato solo questi due: System.Web.ApplicationServices, System.Web.Services ....
a1204773

4

System.Web.HttpContext.Current.Server.MapPath("~/") restituisce null se lo chiamiamo da un thread.

Quindi, prova a usare

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


1

Firt aggiungi un riferimento a System.web, se non lo hai. Fallo nella cartella Riferimenti .

È quindi possibile utilizzare 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);

Le risposte di solo codice sono considerate di bassa qualità: assicurati di fornire una spiegazione su cosa fa il tuo codice e come risolve il problema. Aiuterà sia il richiedente che i futuri lettori se puoi aggiungere ulteriori informazioni nel tuo post. Vedi Spiegazione delle risposte interamente basate sul codice
Calos

0

Prova ad aggiungere System.Webcome riferimento al tuo progetto.



0

So che questo post è vecchio di alcuni anni, ma quello che faccio è aggiungere questa riga all'inizio della tua classe e sarai ancora in grado di utilizzare Server.MapPath

Dim Server = HttpContext.Current.Server

oppure puoi creare una funzione

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

Mi occupo di rendere le cose più facili. L'ho anche aggiunto alla mia classe Utilità nel caso in cui dovessi imbattermi di nuovo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.