| 

.NET C# Java Javascript Exception

2
Ich würde gerne einen HttpHandler erstellen der nur etwas tun soll wenn in der URL ein ganz bestimmter Parameter kommt.
Registrieren in der web.config kann ich das Teil ja so.
<add verb="*" path="*" type="GEBEE. ...

Er wird auch geladen. Aber dann bleiben die Seiten immer leer. Passt nicht.
Also dachte ich, ich frage im Handler ab ob der gewünschte Parameter in der URL ist. Klappt auch nicht wie gedacht.
public void ProcessRequest(HttpContext context)
{
if(!string.IsNullOrEmpty(context.Request.QueryString["ls"]))
{
context.Response.Write("Hallo");
}
}

Entweder bleibt die Seite leer oder es wird nur Hallo reingeschrieben. Ich möchte aber dass die Seite regulär kommt oder eben NUR Hallo. Je nach dem ob es den Parameter ls gibt oder nicht.

Ich werde den Absender der URL leider nicht dazu bewegen können den Aufruf irgend wie auf /parameter.xyz?ls= zu ändern. Dann könnte ich in der Web.config beim path ja auf parameter.xyz filtern. Kann ich auf Parameter filtern? *ls* funktioniert nicht.
News:
12.11.2009
GENiALi 2,5k 1 2 8
1 Antwort
1
Hm, komische Sache… sieht in meinen Augen eingentlich ganz gut aus. Wie genau bekommst du denn den Parameter übergeben? In der Form "?ls=xyz" bzw "&ls=xyz" oder wie genau?

string ls = Request["ls"];

Da ist im Prinzip genau das gleiche, was du schon benutzt hast, aber teste mal, was bzw. ob er dir die richtigen Werte in die Variable haut (Hier musst du allerdings auf einen Leerstring prüfen, da dies im Gegensatz zu QueryString kein Null zurückgibt, wenn der Parameter fehlt).

Würde mal prüfen ob du mit einem Redirect zwei unterschiedliche Seiten bekommst, also etwa so:

public void ProcessRequest(HttpContext context)
{
string ls = context.Request["ls"];
if(!ls.IsNullOrEmpty(ls))
{
Response.Redirect("http://www.google.de/")
} else {
Response.Redirect("http://www.yahoo.de/")
}
}

So kannst du auf jeden Fall (unabhängig von deiner Programmierung) sehen, ob er prinzipiell die richtige Funktion ausführt. Aber wie ich schon sagte, sieht eigentlich alles sehr richtig bei dir aus.

Wenn das Problem die weiße Seite ist, dann mach doch ein redirect zu einer anderen Seite, wenn du erkannt hast, dass kein Parameter vorliegt. Ist zwar nicht gerade elegant, aber kann mir das sonst auch nicht erklären.
13.11.2009
Dustin Klein 2,9k 2 9
Via GET http://blog.geniali.ch/?ls=22WS5DF..... oder via POST.

Die Logik funktioniert schon. Das ist kein Problem. Wenn der Parameter kommt macht der das if. Aber, wenn keine Parameter kommt, dann soll die Webseite ganz normal ausgegeben werden. Wenn der Parameter kommt muss ich ein XML generieren und zurückgeben.
Zur Zeit bekomme ich nur ein "Hallo" oder eine leere, weisse Seite ohne HTML.
GENiALi 13.11.2009
1
Und wenn du siehst, dass kein Parameter übergeben wurde, dann kannst du doch ein redirect auf eine andere Seite von dir machen. Dann würde die Seite praktisch nur zwischen geladen, um die Parameter zu prüfen.

Ist zwar nicht elegant, aber mir fällt momentan auch nicht ein, wieso du nur eine weiße Seite bekommst.
Dustin Klein 13.11.2009
Ahhh. Dass ist es. Ich dachte, der HTTP Handler würde, wenn ich NICHTS mache einfach die Seite normal rendern. Aber klar. Das mit dem Redirect ... Manchmal könnte es so einfach sein. Danke.
GENiALi 13.11.2009
Kein Problem ;-)
Dustin Klein 13.11.2009
Doch noch nicht ganz. Jetzt habe ich ein Endlosloop. Wenn der Parameter nicht kommt, dann will ich die Seite aufrufen die eigentlicha aufgerufen werden sollte. Dann komme ich wieder in den Handler und wieder und wieder ...
Versuche es mit context.Response.Redirect(ReferrerUrl)
GENiALi 13.11.2009

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH