2010-08-20 8 views
2

Je viens de créer une nouvelle application Web ASP.NET dans VS2010 et de la configurer en tant qu'application dans IIS7.URL relatives aux applications

Vous ne savez pas si cela est pertinent, mais le code réside physiquement dans le dossier \ myserver \ projects \ epeui \ epe (le dossier projets est la racine de mon site Web par défaut). L'application se bloque à la racine du site Web par défaut de cette machine: http://myserver/epe/. Et est configuré comme une application dans IIS.

Normalement, j'ai utilisé des URL relatives à la racine de l'application, donc mes fichiers CSS sont dans/styles /, mes images sont dans/images/et mes fichiers JavaScript sont dans/scripts /. Etant donné que l'application est configurée en tant que telle dans IIS, pour accéder à mon logo, j'utiliserais /images/mylogo.png, une URL relative à l'application.

Cependant, cela ne fonctionne pas pour ce site; à la place, j'ai besoin d'utiliser des chemins parents (../images/mylogo.png) ou des URL relatifs au site web par défaut (/epe/images/mylogo.png). Aucun d'entre eux sont très bons pour des raisons de portabilité.

J'ai aussi essayé d'utiliser le tilde à utiliser des URL qui sont soi-disant par rapport au chemin virtuel (à savoir la racine de l'application) = ~/images/mylogo.png

Je jure que je l'ai fait mille fois avant, mais clairement foirer quelque part ... Des suggestions? Est-ce que quelqu'un peut au moins confirmer que, pour une application standard dans IIS, /mypage.html devrait faire référence à http://myserver/myapp/mypage.html et non http://myserver/mypage.html?

Répondre

1

/mapage.html va carte à la racine http://myserver/mypage.html, ce comportement est correct

Le ~ sur un contrôle côté serveur tracera à la racine de l'application (si <asp:HyperLink NavigateUrl="~/mypage.html"...> cartographierons à http://myserver/myapp/mypage.html

I Par le passé, surtout avec les fichiers css et javascript, nous devions utiliser <%= Request.ApplicationPath %>/myPage.html Parfois, il est bon de définir cela comme une variable globale dans le fichier global.asax.cs, donc vous pouvez l'utiliser partout: Request.ApplicationPath dans votre instance sera "/ myapp"

J'ai beaucoup lutté avec ça aussi.