Я думаю, что MVC не считает это ошибкой (т. Е. Не вызывает исключения), а скорее просто не соответствует ни одному из маршрутов, и поэтому IIS обрабатывает 404, как обычно. Чтобы обработать это в коде, я бы добавил шаблон подстановки в конце вашего списка маршрутизации.
Global.asax.vb & hellip;
routes.MapRoute(_
"FileNotFound", _
"{*key}", _
New With {.controller = "FileNotFound", _
.action = "Http404"} _
)
FileNotFoundController.vb & hellip;
Function Http404(ByVal key As String) As ActionResult
Dim RedirectId As Guid
Select Case key
Case "someold/path/andfile.php"
RedirectId = New Guid("68215c26-0abe-4789-968e-0187683409b6")
Case Else
RedirectId = Guid.Empty
End Select
If Not RedirectId = Guid.Empty Then
Response.StatusCode = Net.HttpStatusCode.MovedPermanently
Response.RedirectLocation = Url.RouteUrl("SomeOtherRoute", New With {.id = RedirectId})
Else
Throw New Exception("Unable to resolve route.")
End If
Return Nothing
End Function
Это позволит вам взглянуть на предполагаемый URL-адрес и решить, для какого целевого URL перенаправить его.
В качестве альтернативы вы можете реализовать пользовательскую страницу обработчика 404 и установить ее непосредственно в IIS. В коде этой страницы/контроллера вы можете просмотреть предполагаемый URL-адрес и перенаправить в качестве необходимого.
Вопрос: http://stackoverflow.com/questions/108813/404-http-error-handler-in-asp-net-mvc-rc-5 –