Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

ASP.Net - URL Routing adhv global.asax

Pagina: 1
Acties:

  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Hello,

Ik kom naar hier voor hulp, want ik zie door de bomen het bos niet meer. Op internet vind je veel info over URL rewriting en URL routing, maar ik blijk maar niet te vinden wat ik zoek. Misschien is het voor één van jullie heel simpel, en daarom waag ik mijn kans hier eens.

Ik maak een website, laat ons zeggen "voorbeeld.nl".

Aan de hand van URL routing in ASP.Net (4.5), wil ik via de global.asax file ervoor zorgen dat deze link:
voorbeeld.nl/12345678
omgezet wordt in deze link:
voorbeeld.nl/index.aspx?id=12345678

Ik gebruik VB.

Op internet lijken alle voorbeelden heel eenvoudig, maar deze werken niet op mijn locale server.

Wat lukt er niet?
Wel, ik volg de MSDN uitleg op pagina MSDN: ASP.NET Routing maar daar wordt verwezen naar een CategoryRouteHandler waarvan nergens staat waar die geplaatst moet worden of wat er van code in moet staan.

Nogmaals: Het lijkt heel simpel en ik voel me dan ook niet echt een held als het niet lukt... ;)

Er wordt ook verwezen naar MSDN: How to: Use Routing with Web Forms maar daar zie ik dat je wijzigingen moet aanbrengen aan de web.config en zie ik niet hoe ze die CategoryRouteHandler verder afhandelen.

[ Voor 11% gewijzigd door Brynnie op 12-12-2014 10:42 ]


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Misschien heb je iets aan deze blogpost van Scott Hanselman?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Die site had ik ook gevonden, maar daar spreken ze over het installeren van een NuGet package, terijl het volgens MSDN kan door zelf global.asax en web.config aan te passen.

  • MrTinux
  • Registratie: December 2000
  • Laatst online: 17:30

MrTinux

Terug van nooit weggeweest.

Waarom in de Global.asax? Met behulp van de officiele IIS-extensie URL Rewrite 2.0 kan je dit prima in de web.config doen, en het rewriten daarmee door IIS laten uitvoeren.

Bijvoorbeeld:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="voorbeeld.nl/id" stopProcessing="true">
                    <match url="^\d+$" />
                    <action type="Rewrite" url="index.aspx?id={R:0}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Je kan dit handmatig invoeren, maar ook in de IIS Console via point-and-click configureren onder je website en dan het item URL Rewrite.

"Hij doet 't niet" = onvolledige informatie


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
De website wordt gehost op een shared Windows hosting account. Daar heb ik geen toegang tot de IIS console, maar uiteraard wel tot de web.config file. Moet bovenstaande code dan enkel in de web.config geplakt worden?

Wat is dan het voordeel van rewrite tov route?

  • markvt
  • Registratie: Maart 2001
  • Laatst online: 20-11 23:59

markvt

Peppi Cola

Op deze url:
MSDN: ASP.NET Routing

Die code mik je direct in je global.asax

global.asax:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script Language="C#" RunAt="server">
protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Add(new Route
    (
         "Category/{action}/{categoryName}"
         , new CategoryRouteHandler()
    ));
}
</script>

van-tilburg.info -=- meka (sega emulator) - Proud MEDION fanclub member - KOPPIG VOLHOUDEN !


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Zo ver was ik inderdaad ook al, maar men verwijst naar een CategoryRouteHandler die niet aanwezig is. Op de pagina waarnaar men verwijst, MSDN: How to: Use Routing with Web Forms word ik ook niet wijzer. Als ik implementeer at daar staat, valt de compiler (Visual Studio 2013) over dit stukje code:
code:
1
2
3
    Public Sub New(ByVal vPath As String)
        _virtualPath = vPath
    End Sub

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 16-10 10:47
Die CategoryRouteHandler is een voorbeeld.

Het meest eenvoudigste voorbeeld van een asp.net mvc route definitie is zowiets als dit:

C#:
1
2
3
4
5
routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );


voor webforms gebruik je dan in plaats van MapRoute, MapPageRoute

C#:
1
routes.MapPageRoute("MyUniqueRouteKey", "webformsprutspagina/{id}", "~/webformsprutspagina.aspx");

Hier zou je dan net als bij de mvc route nog zelf defaults/constraints aan toe kunnen voegen.

Let op de id variabele in je pagina is dan niet meer via de querystring op te halen. Hoe dit wel moet laat ik aan jou en je google fuu over.

En serieus.. werkelijk de eerste hit op google als je zoekt op 'webforms url routing' had je dit hele topic kunnen besparen :P

  • Kentsfield
  • Registratie: November 2007
  • Laatst online: 11-01-2023
De ts heeft volgens mij niet aangegeven mvc te gebuiken. Voor webforms raad ik aan de volgende walkthrough even door te lezen.

MSDN: Walkthrough: Using ASP.NET Routing in a Web Forms Application

Edit* Zie nu pas dat andere al wel duidelijk hints hebben gegeven naar waarschijnlijk dit artikel.

[ Voor 15% gewijzigd door Kentsfield op 12-12-2014 21:45 ]

Dingen!


  • Brynnie
  • Registratie: Februari 2001
  • Niet online
Iedereen hartelijk bedankt voor het meedenken.

Ik denk dat de "fout" niet aan mij ligt, maar aan het hostingbedrijf. Wanneer ik alles lokaal bekijk, dan werkt het prima. Maar wanneer ik het live bekijk, blijft de site doorverwijzen naar de custom errorpage 404 van Plesk.

Nochtans staat "use custom errorpages" uit in het control panel en ook in web.config staat duidelijk dat er geen custom errorpages gebruikt moeten worden.
Pagina: 1