26. juli 2007 - 04:21Der er
8 kommentarer og 1 løsning
include og/eller server.execute
Jeg har fået et problem med min nuværende opstilling. Jeg bruger pt. <!-- #include file="fil.asp" --> når jeg vil hente flere filer ind i et dokument, men jeg har så fået det problem at rækkefølgende på disse filer kan ændre sig alt efter en prioritet i en database.
Jeg er derfor nu begyndt at lave det hele om til server.execute, men der har jeg fået problemer med min database-forbindelse. Jeg har min "main" fil hvori jeg laver den databaseforbindelse og henter min info ved rs("id") og jeg bruger den samme forbindelse på de sider der skal inkluderes, men det virker ikke efter jeg er gået over til server.execute kan det "redes" eller hvad skal man gøre (og jeg vil helst undgå at skulle lave en ny databaseforbindelse på alle mine undersider)
hvis du vil bruge server.execute er du tvunget til at lave flere db-forbindelser da hver execute kører helt selvstændigt - du vil heller ikke kunne genbruge variabler, pånær sessions/cookies, på tværs af side. eneste alternativ er include.
Includes og Server.Execute har hver sit anvendelsesområde.
Min egenerfaring (groft defineret) er at includes skal bruges som funktionsbibliotek for sider, f.eks. opsætning af forbindelser og generelle funktioner som kan have interesse for mere end én side på et website.
Server.execute skal bruges til at inkludere (selvstændige) moduler af layout og funktionalitet. Jeg plejer at tænke på Server.Execute som en mulighed for at indkapsle forretningsområder, der ikke har behov for at kende til den omverden de eksisterer i.
For såvidt angår din problemstilling, så er der ikke umiddelbart noget i vejen med at lave forbindelser til databasen mange gange i løbet af opbygningen af din side. Hvis du kører på en IIS 6, så sker connectionpooling automatisk for dig og du skal derfor bare sørge for at forbinde så sent som muligt og frigive forbindelsen så tidligt som muligt, således du låser resurserne kortest mulig tid.
Jeg ved det er en simplificering af problemstillingen, men det er i høj grad muligt at bygge et site op vha. server.execute, du skal bare sørge for at anvende Server.Execute og include til de rette formål. Det kræver dog en anden måde at tænke på, når du opdeler dine sider - du skal nok over i at tænke på en side som en samling af isolerede komponenter der bare plugges ind i siden, der hvor behovet er...
Jeg har nu fået alle min sider til at virke, men! tanken bag dem er at de er nogle små "feeds" som man kan tilføje under sin profil (kalender, nyheder, events, blog osv.) og så når man går ind på den så skal den åbne de valgt feeds og i den rækkefølge man vil have dem i. Jeg er så stødt ind i et nyt problem med det.
jeg har lavet følgende løkke, som skulle indsætte feedsne i den rækkefølge de er valgt i:
<% privoStor = rs("privoStor")
privoStor = split(privoStor, ",")
for i = 0 TO UBound(privoStor)
SprivoSQL = "select * from feed where rang = 1 and id = " & privoStor(i) set rsS = ConnInfo.execute(SprivoSQL)
if not rsS.eof then server.Execute (rsS("link")) end if rsS.close set rsS = nothing
next %>
men den kommer med en fejl der siger:
Fejltype: Serverobjekt, ASP 0228 (0x80004005) Kaldet til Server.Execute mislykkedes under indlæsningen af siden.
hehe... typisk, havde gemt filen som "nyheder.asp" og kaldt den for "nyhed.asp" i databasen... synes jeg havde tjekket det hele igennem... takker for hjælpen, nu virker det perfekt
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.