Для выполнения переадресации в ASP.NET Core применяется метод Redirect() объекта HttpResponse, который имеет следующее определение:
Sub Redirect(location As String) Sub Redirect(location As String, permanent As Boolean)
Первая версия метода выполняет временную переадресацию. В качестве параметра получает адрес для редиректа, а клиенту посылается статусный код 302.
Вторая версия кроме того в качестве второго параметра получает булевое значение, которое указывает, будет ли переадресация постоянной. Если этот параметр равен true, то переадресация будет постоянной, и в этом случае посылается статусный код 301. Если равен false, то переадресация временная, и посылается статусный код 302.
Допустим, у нас было следующее приложение
Imports Microsoft.AspNetCore.Builder Imports Microsoft.AspNetCore.Http Module Program Sub Main(args As String()) Dim builder = WebApplication.CreateBuilder(args) Dim app = builder.Build() app.Run(Async Function(context As HttpContext) As Task If context.Request.Path.Value = "/old" Then Await context.Response.WriteAsync("Old Page") Else Await context.Response.WriteAsync("Main Page") End If End Function) app.Run() End Sub End Module
При обращении по адресу "/old" приложение посылает сообщение "Old Page".
Но затем мы решили сделать переадресацию с адреса "/old" на "/new". Используем для этого первую версию метода Redirect:
Imports Microsoft.AspNetCore.Builder Imports Microsoft.AspNetCore.Http Module Program Sub Main(args As String()) Dim builder = WebApplication.CreateBuilder(args) Dim app = builder.Build() app.Run(Async Function(context As HttpContext) As Task If context.Request.Path.Value = "/old" Then context.Response.Redirect("/new") ElseIf context.Request.Path.Value = "/new" Then Await context.Response.WriteAsync("New Page") Else Await context.Response.WriteAsync("Main Page") End If End Function) app.Run() End Sub End Module
Теперь при обращении по адресу "/old" произойдет перенаправление на адрес "/new".
В данном случае применяется редирект на локальный адрес в рамках приложение. Но также можно использовать редирект на внешние ресурсы:
If context.Request.Path.Value = "/old" Then context.Response.Redirect("https://www.google.com/search?q=metanit.com") End If