2012-03-26 12 views
0

解決方法がわからない奇妙な問題があります。サーバー変数は、等である/action?id=abc&=type=3 :ここhttpリクエストがクエールストリングから一部のリクエストでパスを分割しない

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

しかし、奇妙な行動を来る:あなたのようなURLが持っている場合

.netのための通常の動作は、要求が来るは、Mediapartners-Googleに、サーバー変数は疑問符でURLを分割してありません。

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

ので、ルーティングエンジンはaction?id=abc&=type=3というアクション名を検索しようとしていると、それはそれを見つけることができません、404エラーを提供します。

これはなぜ起こるのですか?

答えて

0

ルーティングエンジンがルートに一致したときに、残りの部分がオプションのパラメータに詰め込まれます。それは疑問符に達する前にルートマッチを持つことはかなり可能です。このケースを処理する別のルートが必要なように見えます。また、最初のルートで処理されるので、最も弱い順にルートが必要であることを覚えておいてください。

+0

ブラウザから呼び出されたときの経路はうまく動作しますが、動作しない場合はmediapartners-googleから呼び出されます。サーバ変数は、mvcフレームワークが動作する前に設定されます。 – Jokin

+0

私はmediapartners-googleからアクセスしたURLをブラウザ経由でアクセスしたURLと扱うことも可能ではありません。 URLはURLです。したがって、論理的な前提は、URLが何らかの点で微妙に異なることです。私はglobal.asax.Application_BeginRequestの絶対URLを記録し、あなたが得るものを参照します。これが起こっているという要求には、何か別のものがなければなりません... –

関連する問題