ASP.. NET WebApi 2.0控制器分离应用程序

本文关键字:控制器 分离 应用程序 NET WebApi ASP | 更新日期: 2023-09-27 17:50:24

我们有一个带有多个控制器的WebApi 2.0应用程序,其中一个用于中继数据。由于可伸缩性的问题,我们希望将特定的控制器移到一个单独的进程中,这样我们就可以将其与应用程序的其余部分分开扩展,可能是在不同的服务器上。虽然我们不想破坏兼容性,但在我们更新所有客户端之前,我们仍然会向控制器所在的旧端点发出请求。将这些请求(它必须与GET/POST/DELETE一起工作)重定向到新位置的最简单方法是什么?这是否必须在IIS中完成,或者是否有修改路由的方法?到目前为止,我们已经尝试在旧控制器中简单地返回一个重定向响应,但这对POST:

不起作用。
    public async Task<HttpResponseMessage> Post()
    {
        var response = Request.CreateResponse(HttpStatusCode.Moved);
        response.Headers.Location = new Uri("http://new/api/endpoint");
        return response;

即使这样做了,我们也有一些库组件使用关闭了自动重定向的WebClient,这些组件需要重构,这是不理想的。有保证的解决方案吗?

ASP.. NET WebApi 2.0控制器分离应用程序

重定向只不过是一个带有特定状态码和一些额外信息的HTTP响应。如果您的客户端应用程序不打算遵循重定向,那么这不是解决问题的一个选项。

您可以让您的Post()方法充当其他web服务的代理。作为一个例子,如果你的第一个API是在example.com/Site1,你的第二个API是在example.com/Site2,那么你可以让你的客户端向Site1发出请求,而Site1内部向Site2发出请求。