2012-03-26 4 views
0

Ich habe ein seltsames Problem, die nicht wissen, wie zu lösen.http Anfrage nicht Pfad von Querystring in einigen Anfrage

Das übliche Verhalten für .net ist, wenn Sie eine URL haben wie: /action?id=abc&=type=3 die Servervariablen wie sind:

URL: /action 
PATH_INFO: /action 
QUERY_STRING: id=abc&=type=3 

Aber hier, um das seltsame Verhalten kommt, wenn die Anfrage kommt von Medienpartner-google, die Servervariablen teilen sie die URL nicht auf das Fragezeichen und sind:

URL: /action?id=abc&=type=3 
PATH_INFO: /action?id=abc&=type=3 
QUERY_STRING: 

So ist die Routing-Engine versucht, einen Aktionsnamen action?id=abc&=type=3 genannt zu finden und findet es nicht, den Fehler 404 bereitstellt.

Weiß jemand, warum das passiert?

Antwort

0

Bei MVC, wenn die Routing-Engine eine Route abgeglichen hat, wird der Rest in den optionalen Parameter eingefügt. Es ist durchaus möglich, eine Route zu finden, bevor sie das Fragezeichen erreicht. Es sieht so aus, als ob Sie eine andere Route brauchen, um mit diesem Fall umzugehen. Denken Sie auch daran, dass Sie Ihre Routen in der Reihenfolge vom stärksten zum schwächsten benötigen, da sie von der ersten passenden Route verarbeitet werden.

+0

Die Route funktioniert gut, wenn sie von einem Browser aufgerufen wird, wenn sie von mediapartners-google aufgerufen wird, wenn sie nicht funktioniert. Die Servervariablen werden aufgefüllt, bevor das mvc-Framework zur Aktion kommt. – Jokin

+0

Ich weiß überhaupt nicht, wie es überhaupt möglich wäre, eine URL, auf die von mediapartners-google zugegriffen wird, anders zu behandeln als eine URL, auf die über den Browser zugegriffen wird. Eine URL ist eine URL ist eine URL. Daher ist die logische Annahme, dass die URL irgendwie anders ist. Ich würde die absoluten URLs in global.asax.Application_BeginRequest protokollieren und sehen, was Sie bekommen. Es muss etwas anderes in der Bitte sein, dass dies geschieht ... –