Я управляю приложением MVC3, где мне нужно поддерживать способность третьих сторон создавать ссылку на активы в моем домене. Поскольку некоторые из звеньев нарезанные кубиками по слияниям почты и других проблем редактирования текста, URL с опечатками были введены, например:Использование маршрутов для исправления опечаток в URL-адресе
/Content/ima!+ges/email/spacer.gif
или
/Content/image++s/email+/spacer.gif
Я хотел бы, чтобы лишить их посторонними символов от RegEx, прежде чем пытаться их обслуживать. Я считаю, что это может быть метод Route, и я бы приветствовал указатель или два статьи, демонстрирующие этот подход.
ДОПОЛНЕНИЕ (Потому что мне нужно форматирование).
Реализация @ маршрутизации Натана я не могу отправить имя файла обработчика контроллера - это всегда видеть нулевое значение, передаваемое в Я пробовал как "filepath
'и' path
'с тем же результатом "null".
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();
}
ТНХ
Спасибо Nathan - я думаю, что есть проблема с бит кода, где вы возвращаете HttpNotFound(); - подробности в моем отредактированном вопросе. - оценено – justSteve