我的要求是将遗留应用程序中特定REST API端点的所有POST请求重新路由到新端点(两者都使用ASP.NET Web API实现)。新端点托管在IIS中的同一父网站下,但在单独的应用程序池中运行。
我的第一个想法是在IIS中配置URL重写规则,但遗憾的是,如果不将其他组件引入混合中,则无法跨应用程序池重写URL,例如应用程序请求路由,这对我们来说是不可行的。
我考虑的另一个选项是将URL重写规则的操作设置为“重定向”而不是“重写”。区别在于here。使用此方法将请求重新路由到新端点,但是它将其从POST转换为GET请求,因此失败。端点必须接受POST请求,其中包含POST主体中指定的预期参数,并向发起方返回适当的响应。
另一种选择是在我的遗留应用程序中实现Owin中间件,该应用程序检查每个请求,如果URL是否发往特定端点,则从发起请求重建POST请求并将其发送到新端点,然后返回响应给发件人。我曾考虑过返回302重定向而不是重建请求,但这会导致发送方向重定向的URL发出GET请求,而不是POST。如here所述,返回307是另一种选择,但这可能会导致安全警告,也不会得到普遍支持。
我希望有任何其他建议来实现这一点。