Я мог бы успешно перенаправить запрос 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);
}
}