Я думаю, что 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 и перенаправить как необходимый.