繁体   English   中英

MVC上的“重定向” HttpRequest到另一台服务器

[英]“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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM