我正在管理一個MVC3應用程序,我需要支持第三方創建鏈接到我的域中的資產的能力。因爲某些環節的切片,並通過郵件合併和其他文本編輯問題切丁,連錯別字的網址已經出臺,如:使用路線糾正URL中的拼寫錯誤
/Content/ima!+ges/email/spacer.gif
或
/Content/image++s/email+/spacer.gif
我想剝奪這些無關在嘗試提供服務之前,RegEx提供的字符。我認爲這是一種Route方法可以完成的事情,我希望有一兩個指向這些方法的文章。
增編(因爲我需要的格式):
實現@彌敦道的路由我無法將文件名發送到控制器處理器 - 它總是看到在一個空值傳遞我都試過'filepath
'和'path
'具有相同的'空'結果。
routes.MapRoute(
"MangledFilename",
"{*filepath}",
new { controller = "MangledFilename", action = "ServeFile" }
);
我覺得這是配置通配符處理上IISExpress和我單獨尋找一個解決方案的問題。更嚴重的直接問題是你的建議如何返回HttpNotFound - 我得到一個硬IIS異常(執行暫停與YellowScreenDeath),而不是沉默的404結果。
public ActionResult ServeFile(string filePath)
{
if (filePath != null) // workaround the null
{
...
}
return HttpNotFound();
}
THX
感謝彌敦道 - 我認爲有一個代碼位,你'返回HttpNotFound();'的問題 - 我編輯的問題中的細節。 - 讚賞 – justSteve 2012-02-27 15:46:35