2012-03-26 19 views
0

我有一個奇怪的問題,不知道如何解決。http請求不能在某些請求中分解查詢字符串的路徑

for .NET的通常的行爲是如果你有一個網址,如:/action?id=abc&=type=3 服務器變量是這樣的:

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

但是這裏來了怪異的行爲:當請求來自了MediaPartners - 谷歌來說,服務器變量不會在問號分裂URL和有:

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

所以路由引擎正試圖找到一個名爲action?id=abc&=type=3操作名稱,並沒有發現它,提供了一個404錯誤。

有沒有人知道爲什麼會發生這種情況?

回答

0

對於MVC,當路由引擎匹配路由時,其餘的將被填充到可選參數中。在達到問號之前,很可能有一條路線匹配。它看起來像你需要另一條路線來處理這種情況。另外請記住,您需要按照最強到最弱的順序排列路線,因爲它們是由匹配的第一條路線處理的。

+0

從瀏覽器調用時,該路由運行良好,它在Mediapartners-google無法正常工作時調用。在mvc框架開始行動之前,服務器變量會被填充。 – Jokin 2012-03-27 07:11:56

+0

我不知道有什麼方法可以處理從mediapartners-google訪問的URL與通過瀏覽器訪問的URL不同。一個URL是一個URL是一個URL。因此,合乎邏輯的假設是,URL在某種程度上略有不同。我會在global.asax.Application_BeginRequest中記錄絕對URL,並看看你得到了什麼。請求發生這種情況必須有不同的事情...... – 2012-03-27 10:29:14