Server.MapPath kann nicht verwendet werden

110

Was muss ich tun, um Server.MapPathArbeit zu machen ?
ich habeusing System.Web;

was sonst? Wenn ich Servertippe, gibt es keine schnelle Ergebnisoption (Intelli-Sense) für Server.

Irgendeine Hilfe?

a1204773
quelle
1
Sie müssen weitere Informationen bereitstellen. Was für ein Projekt ist das? Warum möchten Sie Server.MapPath ausführen? Ist dies ein Webformularprojekt und schreiben Sie Code in eine Seitenunterklasse oder in die Renderfunktion eines ASPX?
Dai
C # Winforms .. Ich möchte, dass es die Dateiverfügbarkeit auf dem Server überprüft
a1204773

Antworten:

285

Sie können dies versuchen

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

oder verwenden HostingEnvironment.MapPath

    System.Web.Hosting.HostingEnvironment.MapPath(path);
DotNetUser
quelle
1
Sie funktionieren nicht .... Fehler 1 Der Typ- oder Namespace-Name 'HttpContext' ist im Namespace 'System.Web' nicht vorhanden (fehlt Ihnen eine Assembly-Referenz?) ... Fehler 2 Der Typ- oder Namespace-Name 'Hosting' existiert nicht im Namespace 'System.Web'
a1204773
Es sieht so aus, als würden Sie Winforms verwenden. Vielleicht möchten Sie diesen Link sehen, dann debugging.com/bug/18951
DotNetUser
4
Ich auch, HostingEnvironment.MapPath hat funktioniert und ich verwende es außerhalb eines Controllers.
Luke
Zunächst muss Ihr Projekt auf System.Web.dll verweisen, und es wird funktionieren
ihebiheb
Wie lese ich eine Datei in diesem Verzeichnis "~ / AppData / Roaming"?
Murlidhar Fichadia
14

Ihr Projekt muss auf die Baugruppe verweisen System.Web.dll. Server ist ein Objekt vom Typ HttpServerUtility. Beispiel:

HttpContext.Current.Server.MapPath(path);
Leandro Gomide
quelle
3
Ich kann eine solche Referenz nicht finden. Ich habe nur diese beiden gefunden: System.Web.ApplicationServices, System.Web.Services ....
a1204773
4

System.Web.HttpContext.Current.Server.MapPath("~/") gibt null, wenn wir es von einem Thread aufrufen.

Versuchen Sie es also

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

Ravindra Singh Chhabra
quelle
1

Fügen Sie einen Verweis auf hinzu System.web, wenn Sie keinen haben. Tun Sie dies im Ordner " Referenzen ".

Sie können dann verwenden Hosting.HostingEnvironment.MapPath(path);

jdisla
quelle
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
quelle
Nur-Code-Antworten gelten als minderwertig: Stellen Sie sicher, dass Sie erklären, was Ihr Code tut und wie er das Problem löst. Es wird sowohl dem Fragesteller als auch zukünftigen Lesern helfen, wenn Sie Ihrem Beitrag weitere Informationen hinzufügen können. Siehe Erklären vollständig
codebasierter
0

Versuchen Sie, System.Webals Referenz zu Ihrem Projekt hinzuzufügen .

jabu.hlong
quelle
0

Ich weiß, dass dieser Beitrag einige Jahre alt ist, aber ich füge diese Zeile ganz oben in Ihrer Klasse hinzu, und Sie können weiterhin Server.MapPath verwenden

Dim Server = HttpContext.Current.Server

oder du kannst eine Funktion machen

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

Mir geht es darum, die Dinge einfacher zu machen. Ich habe es auch zu meiner Utilities-Klasse hinzugefügt, für den Fall, dass ich erneut darauf stoße.

Guy Cothal
quelle