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?


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

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

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


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


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

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 .



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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.