Avatar billede christian Nybegynder
22. juni 2003 - 15:35 Der er 8 kommentarer og
1 løsning

http handler, på mapper

Ved ikke helt om det er den rigtige kategori...

Men, jeg har lavet en http handler som jeg vil bruge til smarte url'er, så /visNyhed.aspx?id=23 kan blive til /nyheder/nyhed/sidste%20nyhed/

Det fungere fint hvis det bare ender på .aspx så bliver den fanget af min http handler, men hvordan kan jeg gøre så den også kan fange mapper?

Jeg troede jeg kunne gøre det ved at have default.aspx som 'Default document' (også som eneste)

Kan det lade sig gøre og hvordan?
Jeg vil ikke ændre fog meget på opsætningen af IIS'en

Kort om http handleren:
web.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <compilation debug="true"/>
        <httpModules>
            <add type="Rewrite.NET.Rewrite,Rewrite.NET" name="Rewrite.NET" />
        </httpModules>
    </system.web>
</configuration>

Min Rewrite.NET namespace:
using System;
using System.Web;
using System.Text.RegularExpressions;

namespace Rewrite.NET {
   
    public class Rewrite : System.Web.IHttpModule {
        public void Dispose() {
        }

        public void Init(System.Web.HttpApplication Appl) {
            Appl.BeginRequest+=new System.EventHandler(Rewrite_BeginRequest);
        }

        public void Rewrite_BeginRequest(object sender, System.EventArgs args) {
            //her kommer min kode som finder ud af hvad der skal pege på hvad
                SendToNewUrl(Appl.Request.Path.ToLower(), Appl);
        }
           
        public void SendToNewUrl(string url, System.Web.HttpApplication Appl) {
            Appl.Context.RewritePath(url);               
        }
    }
}
Avatar billede odegaard Nybegynder
22. juni 2003 - 17:45 #1
.NET virker kun på de filer der er registreret i IIS til at blive fortolket. Dvs. filer med extension aspx, asmx, ascx, asax, ashx, asd, rem, soap, config, cs, csproj, vb, vbproj, webinfo, licx, resx, resources, vsdisco, jsl, java og vjsproj.

Man kan jo ikke ekservere en mappe.
Avatar billede burningice Nybegynder
24. juni 2003 - 14:50 #2
"problemet", som jeg ser det er, at når du requester f.eks. http://www.hej.dk/ så bliver den request sendt videre til IIS, UDENOM din egen handler, da den jo ikke er sat op til den type requests. IIS har så sin default document-liste som den prøver igennem for at se om der er en fil som matcher. Hvis der er, jamen så bliver requestet da bare sendt til den fil, STADIGVÆK udenom din handler.
Avatar billede odegaard Nybegynder
24. juni 2003 - 15:06 #3
Man kunne vel egentlig udnytte dette, og blot lade default.aspx agere som en handler af mapper.
Dvs. www.etellerandet.dk/biliotek/
faktisk kalder www.etellerandet.dk/biliotek/default.aspx
Ligeledes
www.etellerandet.dk/biliotek/?blah=BoIb
kalder
www.etellerandet.dk/biliotek/default.aspx?blah=BoIb
Avatar billede christian Nybegynder
24. juni 2003 - 15:57 #4
odegaard >> med den løsning skulle jeg oprette mapper fysisk på serveren og det ville jeg gerne undgå...

øv, jeg lader lige spørgsmålet stå lidt åbent endnu før jeg lukker
Avatar billede odegaard Nybegynder
24. juni 2003 - 16:17 #5
vil det sige at mapperne du vil henvise til, slet ikke findes, men blot bliver således præsenteret for klienten?
Det lyder bestemt som om du skal ud i en større ændring af IIS, eller lave din egen webserver (sidstnævnte er faktisk ikke så svært med .NET)
Men som sagt før, så ekserkveres asp.net ikke medmindre du kalder en fil med en af de nævnte extensions. Dette er noget som IIS styrer 100%
Avatar billede Slettet bruger
07. september 2003 - 19:58 #6
Jeg har set en sådan løsning et sted og det er muligt, men det kræver lidt søgning på google...
Avatar billede christian Nybegynder
13. november 2003 - 14:53 #7
jeg lukker spørgsmålet...

Så må mine URL'er bliver
www.xxx.dk/nyheder/2003/saadan/default.aspx
i steder for
www.xxx.dk/nyheder/2003/saadan/
Avatar billede Slettet bruger
13. november 2003 - 15:29 #8
Hey! jeg har svaret. Du skal under IIS sætte asp.net til at håndtere filer med *. Dvs at:
1. Du vælger egenskaber for din webserver eller virtuel mappe.
2. Vælg hjemmemappe
3. Klik tilføj og skriv ".*" i filnavnet og den lange sti til ASP.NET (den kan du se hvad den skal være hvis du læser under filtypen .aspx eller en af de andre.) til sidst er det en god ide at sætte "begræns til:" og skrive "POST,GET,HEAD"

Så opsnapper den også mapper.
Avatar billede christian Nybegynder
13. november 2003 - 15:58 #9
ok... det vil jeg huske, tror dog ikke jeg vil bruge denne metode pga. at drift leverandøren skal ændre opsætning og jeg kunne forstille mig dårlig perfomence, da alle filer (jpg, gif etc) også vil kører gennem asp.net fortolken
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester