2009-10-05 12 views
5

Ich möchte Server.MapPath() -Methode verwenden, um ein virtuelles Verzeichnis zuzuordnen, das ich auf seinen physischen Pfad erstellt habe.Server.MapPath()

Die Sache ist, dass die .net-Umgebung Server.MapPath() nicht erkennt.

Google sagte mir, ich sollte HttpContext.Current.Server mit System.Web, verwenden, aber HttpContext wird nicht erkannt, obwohl ich System.Web verwendet. (Und ich habe überprüft - HttpContext ist eine der System.Web-Klassen)

Hilfe?

+0

Welche Sprache wäre das? – Esko

+0

'.net-Umgebung erkennt Server.MapPath()' nicht. Gibt es einen Fehler? – rahul

+1

Haben Sie System.Web als Referenz des Projekts aufgenommen? – rslite

Antwort

3

Stellen Sie sicher, System.Web in Ihren Projekten Referenzen enthalten sind, diese (in Visual Studio IDE) Sie:

  1. Rechtsklick auf den Projektknoten (Mappen-Explorer-Fenster)
  2. Im Kontext Mennu , klicken Sie auf Verweis hinzufügen
  3. Wählen Sie System.Web auf der Registerkarte .NET Registerkarte Elemente.
  4. Hit OK-Taste

Server.MapPath sollte jetzt verfügbar sein.

+0

Diese Lösung funktionierte für mich, als ich in einer Klassenbibliothek arbeitete. –

3

Wenn Sie eine Webanwendung haben, sollten Sie automatisch einen Verweis auf System.Web.dll haben, und Sie sollten Zugriff auf die Klasse System.Web.HttpContext haben. Stellen Sie sicher, dass Sie die Referenz nicht versehentlich entfernt haben. Sie benötigen eine using System.Web;-Anweisung, um auf die Klasse HttpContext zuzugreifen, ohne den vollständigen Namespace anzugeben.

Wenn Sie keine Webanwendung haben, müssen Sie eine Referenz zu System.Web.dll hinzufügen, um Zugriff auf die HttpContext Klasse zu bekommen, aber das würde Ihnen nicht ein bisschen helfen. Da Sie sich nicht in einer Webanwendung befinden, gibt es keinen HTTP-Kontext und es gibt keinen Webstammordner. Daher können Sie die MapPath-Methode nicht verwenden.

+0

Es könnte sich um eine Methode in einer separaten Assembly handeln, die von der Webanwendung verwendet wird, sodass der Kontext möglicherweise vorhanden ist. – rslite

+0

@rslite: Ja, Sie haben Recht. Das ist auch ein möglicher Grund warum die Referenz fehlt. – Guffa

1

Das gleiche Problem hier. In einer ASP.net 4.0-Webanwendung in einem .ash-Handler mit einem using System.Web an der Spitze. Ich könnte Server.MapPath() nicht verwenden, das ist, was das Buch, das ich habe sagen, zu verwenden oder System.Web.HttpServerUtility.MapPath() das ist, was Google und MSDN aufdrehen. Ich konnte HttpServerUtility.MapPath() auch nicht wie oben erwähnt verwenden.

Allerdings hat mich eine der anderen Antworten dazu aufgefordert, context.Server.MapPath() zu versuchen, die in meiner ProcessRequest(HttpContext context) Methode funktioniert.

+0

Um noch genauer zu sein: 'HttpContext.Current.Server.MapPath()' – Nurp

Verwandte Themen