Just nu i M3-nätverket
Jump to content

IIS och anpassade felsidor


joakimj

Recommended Posts

På IIS får man välja vilken felsida som skall visas för varje felnummer/feltyp. Går det att göra endast EN felsida som dynamiskt känner av vilken feltyp som anropats?

 

Jag har gjort detta i Apache, men är det möjligt i IIS?

 

Jocke

Link to comment
Share on other sites

Magnus Gladh

Borde gå!

Inte helt säker men servervariables har säkert någon metod för att få fram felnumret, och sedan så sätter du att alla fel skall gå till den sidan.

 

Leta efter olika servervariables på någon ASP.sida

 

- Magnus

----------------------------------------

Självlärd (MSSQL & VB & ASP)

 

Link to comment
Share on other sites

I IIS kan du ställa in sökvägen till den fil du vill ska representera ett visst fel. Det är bara att du ger alla felen samma sökväg och även lägger in en querystring med felmeddelandenumret. Sidan processar sedan den och visar rätt felmeddelande.

 

/JANspeed

 

[inlägget ändrat 2002-03-08 15:40:02 av JANspeed]

Link to comment
Share on other sites

Magnus Ahlkvist

Yep,

 

Om ett 500-fel inträffar finns det i Response.Status

 

Om felet är 404 är Response.Status 200 OK, och du kan titta på Request.ServerVariables("QUERY_STRING") som ser ut ngt i stil med:

"404;http://localhost/apa.asp"'>http://localhost/apa.asp"

om http://localhost är adressen till servern och apa.asp är den sida som inte har funnits av servern.

 

Lite osäker på hur 400, 401 etc. hanteras, men de finns antingen i Response.Status eller i Request.ServerVariables("QUERY_STRING")

Kvalificerad gissning säger att iaf 401-fel finns i Response.Status

 

Anledningen till att de hanteras olika är att 404-fel gör att sidan omdirigeras direkt, medan 500-fel som genereras hanteras via en dynamisk include av servern. Sidan processas fram till felet, och värdet i Response.Status ändras. Min gissning är att alla 500-fel hanteras av samma DLL i IIS, och att den kollar på värdet i Response.Status för att avgöra vilket feldokument som ska visas.

 

Response.Status kan även användas för att lösenordsskydda sidor dynamiskt:

<%

Response.Status="401 Not Authorized"

%>

Detta kastar upp en inloggningsruta, vilket kan vara mycket användbart när man vill använda sig av NT-inloggning men inte har tillgång till server-inställningarna.

 

Sedärja, det här svaret bidde ju mycket mer omfattande än jag tänkt mig :)

 

Link to comment
Share on other sites

I IIS under properties/Custom Errors kan du sätta vilken sida som ska höra till vilket fel.

 

Under "edit properties" väljer du Message Type "URL" istället för "File" och skriver in den virtuella sökvägen till aspsidan samt querystring (tex. /errors/404b.asp?error=404)

 

När du sen kör Request.QueryString på själva felmeddelandesidan får du tillbaka typ det här:

404?404;http://domän/felaktigadress.htm'>http://domän/felaktigadress.htm

 

Dela upp strängen så har du fått fram felmeddelandet och det är fritt fram att använda till vad du vill.

 

Varför querystingen får tillägget 404;http://domän/felaktigadress.htm vet jag inte men det kan ju vara praktiskt om man vill rapportera vilken sida besökaren varit inne på när han fick felmeddelandet. Då kan du ju skicka den till en databas eller via ett mail till webmastern.

 

Detta är ett förslag. Det finns säkert fler.

 

/JANspeed

 

 

 

Link to comment
Share on other sites

Det med "/errors/404b.asp?error=404" är iofs en idé, men jag tror att det är bättre att köra tex "/error.asp" på alla och sen kolla av standardquerystringen.

 

Men tack ändå, det är en kul idé.

 

Link to comment
Share on other sites

Jag tror dock inte alla felmeddelande bifogar felmeddelandet i servervariabeln QueryString och då blir du sittandes där. Jag är dock inte hundra på att det är så.

 

Men din metod funkar nog på de flesta.

 

/JANspeed

 

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...