【发布时间】:2012-03-09 21:25:04
【问题描述】:
我正在管理一个 MVC3 应用程序,我需要支持第 3 方在我的域中创建指向资产的链接的能力。由于某些链接因邮件合并和其他文本编辑问题而被切片和切块,因此引入了拼写错误的 URL,例如:
/Content/ima!+ges/email/spacer.gif
或
/Content/image++s/email+/spacer.gif
在尝试为它们提供服务之前,我想通过 RegEx 去除这些无关字符。我_认为这是一个 Route 方法可以完成的事情,我欢迎提供一两篇文章来演示这种方法。
附录(因为我需要格式化):
实现@Nathan 的路由我无法将文件名发送到控制器处理程序 - 它总是看到传入的 null 值。我已经尝试使用相同的 'null' 和 '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();
}
谢谢
【问题讨论】:
标签: asp.net-mvc-3 routes