Переадресация

Последнее обновление: 13.05.2022

Для выполнения переадресации в 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".

Редирект в ASP.NET Core и Visual Basic .NET

Но затем мы решили сделать переадресацию с адреса "/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
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850