我们有一个带有多个控制器的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并关闭了自动重定向,而这些组件需要重构,这并不理想。有保证的解决方案吗?
答案 0 :(得分:1)
重定向只不过是具有特定状态代码和一些额外信息的HTTP响应。如果您的客户端应用程序不遵循重定向,那么这不是解决问题的选项。
您可以将Post()
方法作为其他Web服务的代理。例如,如果您的第一个API位于example.com/Site1
,而您的第二个API位于example.com/Site2
,那么您可以让客户向Site1
发出请求,而Site1
在内部生成请求Site2
。