Toon posts:

[C#] Redirecten bij foute URL

Pagina: 1
Acties:
  • 142 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb sinds een aantal dagen een nieuwe website online. Maar één van die pagina's wordt niet door mijzelf beheerd, maar door een externe firma.

Nu blijkt dat er foute URL's staan in de template die de externe firma gebruikt heeft. Ik heb hen hier al van op de hoogte gebracht, maar zij werken héél traag, en daardoor komen mijn bezoekers voortdurend op doodlopende links uit wanneer zij via hun site gaan.

Nu is er een zekere regelmaat in de foute links. Als zij naar "http://.../home.aspx" linken, moest dat eigenlijk naar "http://.../content/home.aspx" zijn.

Nu kan ik natuurlijk elke pagina waarnaar zij linken aanmaken in de parent directory, en daar gewoon een Response.Redirect plaatsen naar de juiste URL, maar dan ben ik heel lang bezig, en blijf ik bezig aangezien er altijd links kunnen bij komen en verdwijnen.

Ik zou dus graag een soort errorpage maken, die automatisch alles redirect. Maar ik weet niet goed hoe ik daar aan moet beginnen.

Mijn eerste probleem is al dat de foute URL geen 404 error geeft, maar een "Internet Explorer cannot display the webpage" (Firefox geeft XML-parsefout, geen element gevonden op regel 1, kolom 1).Daardoor schiet mijn customErrors in de Web.config niet in gang, en komen de gebruikers al niet op een error-page uit. Dus zou ik al moeten vinden hoe ik ASP.NET toch kan overtuigen om ook bij foute links naar een error page te gaan.

Tweede probleem is dat ik, eens op die errorpage, moet kunnen terugvinden naar welke pagina de gebruiker wou surfen. Dan pas kan ik hem redirecten naar de juiste content.

Kunnen jullie mij een stapje op weg helpen?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Mijn eerste idee zou zijn om een redirect.aspx te maken die als parameter een url krijgt. Zo kun je eventueel controleren in die aspx of de gevraagde url beschikbaar is, en zodra dat niet het geval is kun je aan de slag met het parsen van de url om te kijken of je er zelf misschien niet toch iets van kunt maken. Als dat niet lukt toon je de gebruiker een nette foutmelding.

Overigens is deze oplossing niet echt ideaal. Volgens mij is het qua performance niet helemaal tof, maar als je externe links wil controleren zul je het verwerken van die link volgens mij in je code moeten doen, omdat het anders moeilijk wordt om daar invloed op uit te oefenen.

My personal website


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20:39

gorgi_19

Kruimeltjes zijn weer op :9

Je kan eens kijken voor een eigen httpmodule (al dan niet in de global.asax) om het probleem te tackelen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:10

TeeDee

CQB 241

- Rewrite Engine
- HTTP Module
- Er komt volgens mij wel een errorpage (dus je customErrors uitzetten) en dan kan je in die ErrorPage wel het e.e.a. regelen.

Als de andere partij consequent de verkeerde fout maakt is het makkelijkste (en snelste) een Rewrite Engine. Bijvoorbeeld Ionic Isapi Rewrite.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 01-12 14:29

sopsop

[v] [;,,;] [v]

Als je slim bent pas je het wel zo aan dat je nog wel ziet dat het fout gaat. Anders krijgt je klant nooit de trigger om iets aan te passen.

Dus een foutmelding tonen en dan na x-aantal seconde doorspringen naar de vermoedelijk juiste pagina.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Kan je niet in IIS je 404 pagina instellen op een eigen aspx foutpagina?

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

Topicstarter
Uiteindelijk bleek gisteren laat nog dat ik wel degelijk een 404-error kreeg, maar doordat ik customErrors aan had staan, kreeg ik dat gewoon niet te zien. Ik had echter de redirectURL fout ingegeven (relatief ten opzichte van de foute URL ipv ten opzichte van web.config). Hierdoor vond ASP.NET de redirect pagina niet, en kreeg ik de beschreven foutpagina.

Nadat ik dat verandert had, bleek dat ASP.NET net biedt wat ik nodig heb. Als ze redirecten naar een errorpagina, geeft hij automatisch een aspxerrorpage parameter mee in de URL.

Met een eenvoudige Request.QueryString["aspxerrorpage"], kan ik gemakkelijk de juiste URL vinden en dan gewoon een Response.Redirect.

Performance-gewijs misschien niet ideaal etc. maar het is maar een tijdelijke oplossing. De templates op de andere server moeten zo snel mogelijk aangepast worden natuurlijk.
Pagina: 1