2012-11-08 3 views
6

Ich habe eine .NET-Anwendung, die ich versuche zu debuggen und ein Teil meiner Anwendung lädt eine Datei aus meinem Projekt. Diese Datei beiErhalten Sie den vollständigen Pfad zur Datei beim Debuggen mit IIS Express

C:\Users\USER_FOLDER\Documents\Visual Studio 2012\Projects\MY_PROJECT\_templates\myFile.html 

In meinem Code befindet, geben Sie ich einen relativen Pfad zur Datei und verwenden Sie die Klasse Directory den vollständigen Verzeichnispfad zu meiner Datei zu erhalten:

string myFile = (new DirectoryInfo("_templates/myFile.html")).FullName; 

jedoch diese Erträge der folgende Pfad (extra \ 's als Escape-Zeichen):

"C:\\Program Files\\IIS Express\\_templates\\myFile.html" 

ich den Weg erwarte, der zurückgegeben wird, wenn in IIS Express Debuggen den ersten Pfad entsprechen würde ich aufgeführt, nicht die dritte. Warum ist das? Gibt es noch etwas, das ich in meinem Projekt einrichten muss, damit es die Pfade richtig ableitet? Ich gehe davon aus, dass dies nicht passieren würde, wenn ich meinen Code auf einer IIS7-Site bereitstellen würde, aber ich bin noch nicht auf diese Teststufe gekommen.

+0

Wenn seine Rückkehr 'Programme \\ IIS Express \\' es bedeutet, dass Ihr es aus diesem Verzeichnispfad startet so Genauer gesagt über der Verzeichnispfad. Wenn "_templates/myFile.html" ein lokales Verzeichnis im übergeordneten Verzeichnis ist, ist es nicht sehr spezifisch. –

+0

In diesem Fall gab der Aufruf von Server.MapPath den richtigen Pfad zurück, ohne aussagekräftiger zu sein. In diesem Sinne dachte ich nicht, dass ich beschreibender sein müsste, denn wie in anderen Sprachen behandelte ich den Pfad relativ zum Ort des Skripts, das die Datei referenzierte, aber um seinen Inhalt zu lesen, musste ich den Pfad eingeben. NET-Server benötigt einen vollständig qualifizierten URI für den Pfad, und ich habe nur das falsche Objekt verwendet, um es abzuleiten. Warum meine _valid_ Frage abgelehnt wurde, ist verwirrend. –

Antwort

5

Verwendung Server.MapPath:

Server.MapPath("~/_templates/myFile.html") 

oder HttpServerUtility.MapPath:

HttpServerUtility.MapPath("~/_templates/myFile.html") 
+0

Danke! Server.MapPath funktionierte für mich, aber ich konnte HttpServerUtility.MapPath nicht funktionieren. Für HttpServerUtility beschwert es sich, dass eine Objektreferenz für das nicht statische Feld, die Methode oder die Eigenschaft erforderlich ist. System.Web.HttpServerUtility.MapPath (string) Ich habe verschiedene Methoden versucht, es zu schreiben, und nichts hat funktioniert, also habe ich Ich werde nur Server.MapPath verwenden. Danke noch einmal. –

+0

Nicht sicher, ob dies die exakt gleiche Situation ist, aber ich hatte das gleiche Objektreferenzproblem. Ich löste es mit dem HttpContext. Wie in - HttpContext.Current.Server.MapPath(); –

Verwandte Themen