[英]“Redirect” HttpRequest on MVC to another server
我可以成功地将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);
}
}
好吧,由于我找不到方法并且对MVC控制器并不是真正的需求,因此我将它们更改为WebApi控制器(只有2个和小的),这解决了我的问题,但是如果有人知道一种方法,将其发布到将来的访客。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.