2009-09-19 6 views
18

Das Problem

ich, dass in den typischen virtuellen Verzeichnis Dilemma laufen Sie einige Pfade auf Ihrem ASP.Net-Anwendung und Sie die App in einem virtuellen IIS bereitstellen Verzeichnis. Dann funktionieren alle Pfade, die mit dem "Webstamm" (f.i., "/ images") verwandt sind, nicht, da sich die Anwendung in einem virtuellen Verzeichnispfad befindet.IIS virtuelle Verzeichnis und ASP.NET Verzeichnispfade


Die Lösungen

A. Machen Sie die "Bilder" ein virtuelles Verzeichnis. Auf diese Weise wird "/ images" immer existieren.

B. Verwenden Sie "<%=Request.ApplicationPath%>/Imagenes" als Quelle für meine Bilder. Das funktioniert in IIS sehr gut, aber ich kann es weder in der Entwurfszeit noch in der Debug-Zeit sehen.

Diese Lösung gehören auch die folgenden Anweisungen:

  • System.Web.VirtualPathUtility.ToAbsolute
  • ResolveClientUrl
  • Request.ApplicationPath

C. Verwenden Verwandten Pfade zum aktuellen Kontrolle/Seite. Dies ist genau bekannt, wo der Bilder-Ordner relativ zu meiner aktuellen Datei ist (ohne auf die Wurzel zu gehen. Also würde ich Dinge wie "", "../", "../../" usw. verwenden.


die Lösung ich bin für

suchen gesagt. ich habe diese Lösungen nicht mögen. ich eine Lösung in der Datei web.config oder in IIS wollen würde. Einige conf intruction ich im Netz schreiben CONFIG-Datei, die IIS sagt, wo meine Anwendung tatsächlich wohnt (virtuelles Verzeichnis).

Jede Beratung?

Antwort

10

Sind verwendest du die Tilde (~) für deine Pfade wo du kannst?

~ an die Wurzel der virtuellen Web-Anwendung bezieht sich ....

~/Bilder zum Beispiel.

+1

alternativ für nicht serverseitige img Elemente, können Sie das Zeichen „/“ verwenden, um die Wurzel zu finden, wie in . –

+4

@klabranche, die Tilde (~) ist für die serverseitige Bedienelemente und nur verwendbar in serverseitigen Code (http://msdn.microsoft.com/en-us/library/ms178116.aspx) @DavidAndres , Der Schrägstrich "/" setzt voraus, dass sich Ihre Anwendung im Stammverzeichnis der Website befindet (nicht für virtuelle Verzeichnisse). (http://msdn.microsoft.com/en-us/library/ms178116.aspx) > Ein relativer Pfad der Site-Root, der gegen den Site-Root (nicht den Anwendungsstamm) aufgelöst wird. –

+1

@dealmo - Ich habe gesagt, wo Sie können .... Ich verstehe, dass Sie nach einem alternativen Ansatz für den einen suchen Sie aufgelistet sind. Ich habe nur dafür gesorgt, dass du wenigstens getan hast, was du kannst, wo du kannst. :) – klabranche

3

Wenn es nur für CSS-Dateien auf der Client-Seite ist dann die URL-Direktive macht den Pfad relativ zu dem des Stylesheet statt der Seite:

h1#title { background: url('dog.gif') no-repeat 0 0; } 

Auch wenn Sie auf asp.net sind MVC dann hat man Zugriff auf:

<script src="<%= Url.Content("~/scripts/new.js") %>" type="text/javascript"></script> 
+0

Ich verwende diese Lösung ohne Pfad in Kombination mit "Designs und Skins" und platziere die Bilder im Design-Verzeichnis Seite an Seite mit dem Stylesheet. –

Verwandte Themen