2012-12-20 41 views
3

由於複雜的原因,我不會進入,我們有一些請求進入我們的應用程序/blah/[**Token**](這是字面的,沒有一個是佔位符)。如何忽略包含帶星號的路徑(使用IgnoreRoute)(或將它們映射到靜態資源)

目前我們從MVC的錯誤說,它不能找到一個IController這個每請求到來時

願我們的要求之一:a)404或b)成爲了一個靜態佔位符圖片。

盡我們所能,我們無法弄清楚如何在IgnoreRoute/Route調用中轉義這些字符,以便按照字面處理它們。例如。我們已經嘗試過:

IgnoreRoute("blah/\[\*\*Token\*\*\]") 
IgnoreRoute("blah/[\*\*Token\*\*]") 

但是問題仍然存在。

我們如何逃避這條路徑,使得對blah/[**Token**]的實際請求被忽略並導致404(或者,我們如何將這條確切路徑映射到靜態圖像)?

注意:我們已經編輯了web.config,以便*不是不允許的字符。我們不能(目前)很容易修改傳入的請求路徑,我們只是想阻止我們的錯誤日誌填滿,當它發生:-)

+1

你試過網址編碼你的字符?對於*,%2A,對於[],%5B%5C? IgnoreRoute(「blah /%5B%2A%2AToken%2A%2A%5C」) – Bardo

+0

您是否嘗試過使用IRouteConstraint而不是正則表達式字符串?它[更快](http://samsaffron.com/archive/2011/10/13/optimising-asp-net-mvc3-routing),更容易隔離測試。 – Keith

回答

2

使用路由約束這樣

IgnoreRoute("{*constraint}", new { constraint = @".*\[\*\*ProductImageFile\*\*]" }); 
+0

傳說!這很好。你值得晉升! –