Avatar billede c-sharp Nybegynder
24. maj 2006 - 22:22 Der er 9 kommentarer og
1 løsning

Problem med urlrewriting

Jeg laver følgende urlrewritin i min global.asax:

  void Application_BeginRequest(object sender, EventArgs e) {

        System.Web.HttpContext httpContext = HttpContext.Current;
        String currentURL = httpContext.Request.Path.ToLower();
        string processPath = currentURL.Substring(httpContext.Request.ApplicationPath.Length).TrimStart('/').ToLower();

        string physicalPath = httpContext.Server.MapPath(currentURL.Substring(currentURL.LastIndexOf("/") + 1));
           
        if (processPath.EndsWith(".ikea"))
        {
            string queryString = httpContext.Request.ServerVariables["QUERY_STRING"];
            string defaultPage = "side.aspx?sideindex=" + processPath.Replace(".ikea","");

            processPath = processPath.Substring(0, processPath.Length - ".ikea".Length);

            if (System.IO.File.Exists(physicalPath.Replace(".ikea",".aspx")))
                defaultPage = processPath + ".aspx";           
                   
            httpContext.RewritePath(defaultPage);
        }
    }
Det hele virker fint på min lokale maskine men når jeg ligger det på web-serveren er der et problem. Hvis jeg indtaster en url til en fil der eksistere (med .ikea istedet for .aspx) dur det ikke :-(

Jeg har opsat på IIS at den skal behandle filer af typen .ikea på samme måde som .aspx
Avatar billede snepnet Nybegynder
24. maj 2006 - 23:45 #1
Hvad er det der ikke virker (hvad sker der) ?
Måske har du ikke lov til at lave den her operation:
System.IO.File.Exists(...)
Mvh
Avatar billede dj_uncas Nybegynder
24. maj 2006 - 23:50 #2
En anden tanke: Hvad er "QUERY_STRING" for en server variabel? Mener du httpContext.Request.QueryString ??
Avatar billede c-sharp Nybegynder
24. maj 2006 - 23:53 #3
Godaften snepnet :-)

Ja undskyld den dårlige fejlbeskrivelse, men det der sker er at den ikke kommer ind i: if (System.IO.File.Exists(physicalPath.Replace(".ikea",".aspx"))) hvis filen eksistere. Laver jeg det et andet sted end i global.asax virker det fint, så jeg burde have de fornødne rettigheder. Synes også at det er lidt svært at debugge i global.asax på webserveren :-/
Avatar billede c-sharp Nybegynder
24. maj 2006 - 23:56 #4
Også godaften til dig dj_uncas.

Det meste af koden har jeg her fra: http://www.codeproject.com/aspnet/urlrewrite.asp
Avatar billede snepnet Nybegynder
25. maj 2006 - 01:39 #5
Du kan trace istedet så... Bare læg beskeder ind i tracet sådan her (i beginrequest):
HttpContext.Current.Trace.Write("hvad du nu vil skrive");
Og du kan så slå trace til på siden eller i web.config
Mvh
Avatar billede snepnet Nybegynder
25. maj 2006 - 01:40 #6
Sådan her i web.config:
<trace enabled="true" pageOutput="true"/>
Under <system.web>

Eller
Trace="true"
I dit page_directive på siden.

Mvh
Avatar billede c-sharp Nybegynder
25. maj 2006 - 11:18 #7
SNEPNET DU ER KONGEN ;~)

Fejlen var at jeg laver en replace på .ikea, men selve den fysiske mappe hvori projektet ligger hedder også noget med .ikea.

Mange tak for hjælpen, smid et svar så får du som sædvanlig nogle fortjente point :-)

Lige en lille rettelse til din kommentar, når jeg skal bruge trace på en webserver og ikke lokalt skal man bruge følgende:

  <trace enabled="true" pageOutput="true" localOnly="false"/>


Når den skal
Avatar billede c-sharp Nybegynder
25. maj 2006 - 11:21 #8
Hov lige et hurtigt spørgsmål, ser du nogle problemer i at lave urlrewriting på den måde jeg har gjort det?
Avatar billede snepnet Nybegynder
25. maj 2006 - 12:37 #9
Ja - det er rigtigt... Sorry (det med localOnly).
Nogle problemer med din rewriting... Nøhh... Hvis det løser den opgave du skal have løst må det være fint.
Der findes lidt mere fleksible løsninger du kan hente på nettet - typisk baseret på brug af regulære udtryk, men det er der jo ingen grund til at bruge hvis du bare skal have udført det du har vist.
Mvh
Avatar billede snepnet Nybegynder
25. maj 2006 - 12:37 #10
Url-rewriting er ikke noget jeg normalt bekymrer mig om ;o)
Mvh
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