Just nu i M3-nätverket
Gå till innehåll

../ funkar inte i includes


Roger W

Rekommendera Poster

Vet egentligen inte var jag skall lägga denna post..

 

Så här är det:

Jag utvecklar webapps hemma i min laptop, W7 Pro med IIS 7.5. Just nu håller jag på att rådda i en gammal Classic ASP/Vbscriptapplikation.

 

Jag har en massa includes i index-filen av typen:

<!--#include file="..\includes\aktuellt.inc"-->

 

Fungerar pefekt hemma då jag kör som localhost in i IIS.

 

När jag lägger ut den på Webbservern där den skall ligga ger dessa includes följande fel:

 

Active Server Pages error 'ASP 0131'

Disallowed Parent Path

/troint10/extern/index.asp, line 37

The Include file '..\includes\qry_string.inc' cannot contain '..' to indicate the parent directory.

 

Jag har alltså include-filerna i en våning ovanför, eller nedanför index.asp (beroende på hur man ser det) applikationen eftersom det finns en Intranätversion som återanvänder en hel del av dessa include-filer.

 

Nå. Metoden jag använder är, enligt W3Schools (http://www.w3schools.com/asp/asp_quickref.asp) helt ok. Alltså måste det vara något i IIS som skall ställas in. Någon som har en hint? Någon rättighetsinställning?

Jo, jag får samma fel om jag använder forward slash.

 

Som alltid: Tack på förhand!

 

Roger

Länk till kommentar
Dela på andra webbplatser

IIS har en inställning som heter Enable Parent Paths och standardinställningen är disabled. Och det låter onekligen som att det är denna inställning som ställer till det för dig.

 

Ska vi se om jag kan komma ihåg vart den ligger. I IIS 7 så väljer du din site, dubbelklickar på ASP-Ikonen och sen skall den ligga i listan har jag för mig. Och den borde ligga på samma plats i IIS 7.5 tycker jag.

Länk till kommentar
Dela på andra webbplatser

IIS har en inställning som heter Enable Parent Paths och standardinställningen är disabled. Och det låter onekligen som att det är denna inställning som ställer till det för dig.

 

Ska vi se om jag kan komma ihåg vart den ligger. I IIS 7 så väljer du din site, dubbelklickar på ASP-Ikonen och sen skall den ligga i listan har jag för mig. Och den borde ligga på samma plats i IIS 7.5 tycker jag.

 

Hehe.. Som jag har klickat i IIS utan att se denna inställning. Som givetvis stod som du misstänkte: Disabled.

Kollar och rapporterar i eftermiddag.

Tack!

 

R

Länk till kommentar
Dela på andra webbplatser

Det finns ju en anledning till att Parent Paths är avstängt default...

Jag tycker det är bättre att alltid utgå från rooten med virtuell hänvisning.

Då behöver du ju inte ändra i koden om du flyttar filen (som anropar include-filen).

Dvs:
<!--#include virtual="/includes/aktuellt.inc"-->

Länk till kommentar
Dela på andra webbplatser

Det finns ju en anledning till att Parent Paths är avstängt default...

Jag tycker det är bättre att alltid utgå från rooten med virtuell hänvisning.

Då behöver du ju inte ändra i koden om du flyttar filen (som anropar include-filen).

Dvs:

<!--#include virtual="/includes/aktuellt.inc"-->

 

Hmmm. Smart tänkt. Jag har redan skapat en virtuell "mapp" och ändrat i all kod. Så jag lämnar det som i ditt exempel.

 

Tack!

Länk till kommentar
Dela på andra webbplatser

Någon virtuell mapp behövs inte unsure.gif

 

?

Jag har en mapp under roten som jag lagt till som en "virtuell katalog" i IIS. Kanske använde jag fel terminologi. Ber i så fall om ursäkt för det.

Eller vad menar du? Lite kort inlägg... :)

 

R

Länk till kommentar
Dela på andra webbplatser

Som svar på Rogers inlägg.

 

Det finns ju en anledning till att Parent Paths är avstängt default...

Jag tycker det är bättre att alltid utgå från rooten med virtuell hänvisning.

Då behöver du ju inte ändra i koden om du flyttar filen (som anropar include-filen).

Dvs:

<!--#include virtual="/includes/aktuellt.inc"-->

 

 

För detta behövs ingen virtuell mapp även om det står så i kodraden.

Den utgår från webbplatsroten där mappen "includes" ska ligga.

Länk till kommentar
Dela på andra webbplatser

Som svar på Rogers inlägg.

 

 

 

 

För detta behövs ingen virtuell mapp även om det står så i kodraden.

Den utgår från webbplatsroten där mappen "includes" ska ligga.

 

Ok. Men jag kan inte, av olika anledningar, ha min INCLUDES-mapp i roten, utan "en våning längre upp".. ?

Länk till kommentar
Dela på andra webbplatser

<!--#include virtual="/enmapp/entillmapp/aktuellt.inc"-->

 

Eller menar du en katalog som inte är exponerad i webbsajten över huvudtaget?

Ja, då måste man ju använda en virtuell mapp, ja.

Länk till kommentar
Dela på andra webbplatser

<!--#include virtual="/enmapp/entillmapp/aktuellt.inc"-->

 

Eller menar du en katalog som inte är exponerad i webbsajten över huvudtaget?

Ja, då måste man ju använda en virtuell mapp, ja.

 

Ok. Jo, den ligger inte exponerad alls. Innehållet, includefilerna, hämtas från två mappar, "intern" och "extern"

 

Alltså:

 

ROT

 

ROT/EXTERN

 

ROT/INTERN

 

ROT/INCLUDES

 

ROT/CSS

 

ROT/IMAGES

 

INTERN och EXTERN delar filer från INCLUDES, CSS och IMAGES. Jag testade först med <!--#include file="../INCLUDES/filnamn.inc"--> men då protesterade IIS ute på webben

 

JAg kanske har tänkt fel..

Länk till kommentar
Dela på andra webbplatser

bilder och css måste ju ligga exponerade och så som ASP fungerar måste include-filer också.

 

Först då kan du använda include virtual="/include/fil.asp"

 

Det finns ett sätt där man kan läsa in fil från filsystemet och exekutera med Server.Execute(filinnehåll) men det är lite bök med att få det att fungera, dessutom måste allt skrivas ut med Response.Write istället.

 

Den först föreslagna metoden är att föredra.

Länk till kommentar
Dela på andra webbplatser

bilder och css måste ju ligga exponerade och så som ASP fungerar måste include-filer också.

 

Först då kan du använda include virtual="/include/fil.asp"

 

Det finns ett sätt där man kan läsa in fil från filsystemet och exekutera med Server.Execute(filinnehåll) men det är lite bök med att få det att fungera, dessutom måste allt skrivas ut med Response.Write istället.

 

Den först föreslagna metoden är att föredra.

 

Ok. Jag fattade inte riktigt vad "exponerade" innebar, inser jag nu. CSS och IMAGES fungerar med "../"-anrop. Jag kör vidare på virtual-spåret. Lite extra meckande för den som äger applikationen, men.. tja, life sucks..

 

R

Länk till kommentar
Dela på andra webbplatser

Det blir ju bara "extra meckande" nu i början när du ska göra om det.

Sedan så blir det mycket enklare för alla eftersom du inte behöver ha koll på var den anropande filen befinner sig i förhållande till den som skall inkluderas. Du behöver bara veta var den fil som ska inkluderas befinner sig i förhållande till webbrooten.

 

 

Om du t.ex. vill inkludera en fil från INCLUDES-mappen i låt säga ROT/EXTERN/NYMAPP/ENMAPPTILL/ensida.asp så använder du exakt samma include-kod som i ROT/EXTERN/default.asp

Länk till kommentar
Dela på andra webbplatser

Det blir ju bara "extra meckande" nu i början när du ska göra om det.

Sedan så blir det mycket enklare för alla eftersom du inte behöver ha koll på var den anropande filen befinner sig i förhållande till den som skall inkluderas. Du behöver bara veta var den fil som ska inkluderas befinner sig i förhållande till webbrooten.

 

 

Om du t.ex. vill inkludera en fil från INCLUDES-mappen i låt säga ROT/EXTERN/NYMAPP/ENMAPPTILL/ensida.asp så använder du exakt samma include-kod som i ROT/EXTERN/default.asp

 

Onekligen mycket enklare.

Tack alla för tips och hintar!

 

R

Länk till kommentar
Dela på andra webbplatser

Och som sagt detsamma gäller såklart alla referenser till stilmallar och bilder smile.gif

(dvs. att alltid utgå från rooten gör underhåll och ändringar så mycket enklare)

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...