Веб-приложение бритвенной страницы .NET Core перенаправляет на новое имя хоста - PullRequest
0 голосов
/ 06 мая 2019

У меня есть основное приложение .net со страницей по умолчанию, установленной в /index.cshtml. URL-адрес www.xyz.com перенаправляет на www.xyz.com/index (поскольку это страница по умолчанию). Я хочу обработать входящий запрос и заменить имя хоста в URL. Пример: - www.xyz.com/x -> следует перенаправить на www.abc.com/x. Я не хочу делать это в конфигурационном файле nginx. Я хочу сделать это в коде.

У меня есть промежуточное ПО для обработки запроса

public class GetMiddleware
{
    private RequestDelegate _next;


    public GetMiddleware(RequestDelegate next)
    {
        _next = next;
    }
    public Task Invoke(HttpContext context)
    {
        var request = context.Request;
        string path = request.Path.ToString();
       if(!string.IsNullOrEmpty(path))
        {
            //redirect to new url/path. I want to check if path exists/x or /whatever and redirect to new url/path

        }
        return _next.Invoke(context);
    }
}

}

1 Ответ

0 голосов
/ 06 мая 2019

Вы должны написать ответ (код состояния 301 и заголовок Location) и вернуть:

public class GetMiddleware
{
    private RequestDelegate _next;

    public GetMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public Task Invoke(HttpContext context)
    {
        if (context.Request.Path == "/whatever")
        {
            context.Response.Headers.Add("Location", "https://example.com");
            context.Response.StatusCode = 302;
            return Task.CompletedTask;
        }

        return _next.Invoke(context);
    }
}
...