2010-12-06 7 views
1

Ich habe eine Lösung enthält ein Webprojekt namens "Web" und eine abhängige Klassenbibliothek Projekt namens "Service". Ich benutze den ASP.Net MVC2, um meine Lösung aufzubauen. Wie Sie wissen, gibt es einen Content-Ordner, in dem Bilder und CSS-Dateien unter dem Webprojekt gespeichert werden. Jetzt muss ich den Stream-Verweis von "Content \ Images \ anon.png" in einer Klasse meines "Service" -Projekts bekommen.Wie finde ich ein lokales Bild im asp.net Projekt?

Ich versuchte

var result = new FileStream(@"Content\Images\anon.png", FileMode.Open); 

und drücken Sie F5 zum Debuggen, aber es kann die Datei und löst eine Ausnahme nicht gefunden.

Ich benutze VS2010, bitte sagen Sie mir, wie ich auf dieses Bild zugreifen kann. Vielen Dank.

Antwort

1

Sie können System.Web.VirtualPathUtility.ToAbsolute("~/Content/Images/anon.png"); oder RequestContext.HttpContext.Request.MapPath verwenden auch

+0

Hallo Simon, danke für die Antwort. Wie bereits erwähnt, befindet sich diese Klasse jedoch im Klassenbibliotheksprojekt, sodass die beiden Methoden "C: \ Content \ Images \ anon.png" zurückgeben und eine Ausnahme auslösen, wenn ich den Stream erhalte. –

+0

Wenn die Ausnahme Zugriff verweigert ist, liegt dies daran, dass der Webserver mit einem Benutzer ausgeführt wird, der keinen Lesezugriff auf den Pfad c: \ content \ etc ... hat. Sie müssen Ihre Datei an einem anderen Ort speichern oder die richtigen Zugriffsrechte für den Pfad angeben. –

+0

Nein, die Ausnahmen sagt Datei nicht gefunden –

0

Weil es in Debug \ Content \ Images für die Datei ist auf der Suche \. Bist du sicher, dass die Bilder wirklich da sind? Stellen Sie sicher, dass sich Ihre Datei in diesem Pfad befindet.

+0

Tatsächlich sucht es "C: \ Programme \ Gemeinsame Dateien \ Microsoft Shared \ DevServer \ 10.0 \ Content \ Bilder \ anon.png" nach der Ausnahme Info. Es ist der Webdev-Serverpfad und ich finde meinen Lösungsordner nicht dort. Aber die Lösung läuft noch, weil ich über meinen Browser auf andere Seiten zugreifen kann. –

+0

Manish's Antwort sollte dein Problem lösen. Ich schätze, der Pfad ist nicht korrekt. – Pabuc

3

Können Sie

Server.MapPath("~/Content/Images/anon.png") 
+0

Wie lautet der Namespace von Server? Ich habe nur eine namens "Microsoft.SqlServer.Server", brauche ich zusätzliche Referenz in meinem Projekt? –

+0

Der System.Web-Namespace. –

+0

Verstanden, es ist System.Web.HttpContext.Current.Server, danke –

1

Visual Studio versuchen, macht es in ein temporäres Verzeichnis für Ihre Web-App, nicht Ihre Lösung Ordner/Wenn Sie Ihre Anwendung auf einem IIS-Server veröffentlichen, wird die Server.map korrekt sein.

+0

Meinst du, er kann den korrekten virtuellen Pfad nicht zuordnen, wenn der dev-Server von Visual Studio verwendet wird? –

Verwandte Themen