我試圖支持一些遺留的URL,並將它們映射到控制器操作。該網址是這樣的:具有特殊字符的MVC路線
/~Home+Office~Note+Pads.html
這裏是我的路線:
routes.MapRoute(
"LegacyCategory",
"{path}.html",
new { controller = "LegacyCI", action = "Index", }
);
這裏是(的開始)我的控制器來對付他們:
public class LegacyCIController : Controller {
public ActionResult Index(string path) {
if (path == "~Address+Labels") {
return RedirectToAction("Display", "Category", new { id = "AddressLabels" });
}
return RedirectToAction("Index", "Category");
}
}
如果我在設置斷點LegacyCIController,並且我將我的起始頁設置爲XXX.html,斷點命中(並且失敗if
),並且生活很好。但是,當我嘗試將起始頁設置爲~Address+Labels.html
時,沒有發生斷點,Chrome只是嘔吐並向我顯示一個頁面,上面寫着「oops,這個頁面似乎已被破壞」。
我正在通過我的機器上的IIS 7運行此頁面,而不是Visual Studio。
這個URL格式不正確,以至於一個普通的MVC路由甚至無法處理它,或者我在做其他事情上有錯嗎?
哇,這是一個很漂亮的文件名。 – Tejs 2012-04-20 18:13:07
@Tejs - 是的,是的。處理遺留的東西是生活中真正的樂趣之一:) – 2012-04-20 18:14:09
我的理論是IIS反彈請求 - 我認爲IIS7有一個黑名單的URL字符集。 – Tejs 2012-04-20 18:16:16