«Перенаправить» HttpRequest на MVC на другой сервер - PullRequest
0 голосов
/ 12 июля 2019

Я мог бы успешно перенаправить запрос WebAPI на другой сервер. Может ли кто-нибудь помочь мне сделать то же самое с MVC? Это не перенаправление, это новый запрос к другому серверу Я хотел бы сделать то же самое с контроллерами MVC, но я не знаю, как это сделать.

public class RedirecionarServidorPrincipalHandler : DelegatingHandler
{

    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        if (myCondition)
        {
            var path = request.RequestUri.AbsolutePath;
            if (path.Contains("blabla"))
            {
                string url = request.RequestUri.OriginalString.Replace(request.RequestUri.Host, theOtherHost);

                var requisicao = new HttpRequestMessage(request.Method, new Uri(url))
                {
                    Version = request.Version,

                };

                if (request.Method.Method != "GET")
                    requisicao.Content = request.Content;

                foreach (var header in request.Headers)
                    requisicao.Headers.Add(header.Key, header.Value);

                foreach (var propertie in request.Properties)
                    requisicao.Properties.Add(propertie);


                using (var client = new HttpClient())
                {
                    var ret = await client.SendAsync(requisicao, cancellationToken);
                    var novoRetorno = new HttpResponseMessage(ret.StatusCode)
                    {
                        Content = ret.Content,
                        ReasonPhrase = ret.ReasonPhrase,
                        Version = ret.Version,
                        RequestMessage = request
                    };
                    foreach (var header in ret.Headers)
                        novoRetorno.Headers.Add(header.Key, header.Value);

                    return novoRetorno;
                }
            }
        }
        return await base.SendAsync(request, cancellationToken);
    }
}

1 Ответ

0 голосов
/ 13 июля 2019

Ну, так как я не мог найти способ сделать это и не был реальной потребностью в контроллерах MVC, я изменил их на контроллер WebApi, были только 2 и маленькие, которые решили мою проблему, но если кто-нибудь знает способ, напишите здесь будущим посетителям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...