Asp.net core asp.net核心API有条件URL重写到不同域

Asp.net core asp.net核心API有条件URL重写到不同域,asp.net-core,redirect,url-rewriting,startup,asp.net-core-middleware,Asp.net Core,Redirect,Url Rewriting,Startup,Asp.net Core Middleware,我们正在尝试将一个应用程序api请求分配给不同的应用程序api 例如: [POST]https://{domain1}/api/authentication to[POST]https://{domain2}/api/authentication https://{domain1}/api/Persons到https://{domain3}/api/Persons(取决于标题值) 有没有一种方法可以像中间件或类似的东西一样在全局级别实现 我尝试了下面的选项,但不起作用。似乎URL重写只适用于

我们正在尝试将一个应用程序api请求分配给不同的应用程序api 例如:

  • [POST]https://{domain1}/api/authentication to[POST]https://{domain2}/api/authentication

  • https://{domain1}/api/Persons到https://{domain3}/api/Persons(取决于标题值)

  • 有没有一种方法可以像中间件或类似的东西一样在全局级别实现

    我尝试了下面的选项,但不起作用。似乎URL重写只适用于同一个域

    var options = new RewriteOptions()  
                  AddRewrite(@"api/values", "https://av21.azurewebsites.net/api/home", true);  
     app.UseRewriter(options);
    

    根据asp.net核心url重写只支持入站url重写,不支持出站规则。如果您将在IIS上托管应用程序,我建议您可以尝试使用IIS url重写来实现您的需求。如果您想使用中间件来解决您的需求,您应该编写自定义中间件并检查请求路径和头,然后将请求发送到正确的域,并根据远程api结果生成响应。谢谢@BrandoZhang。应用程序托管在Azure Linux应用程序服务上,我无法更改应用程序服务器设置。使用中间件意味着它更多的是调用另一个API并获得响应,绕过所有剩余的中间件并将响应发送回客户端。是否正确?是的,您可以检查中间件中的请求域,并检查是否调用了另一个api,您可以直接返回响应,而无需调用下一个中间件。详情,你可以参考这个。太好了,再次感谢@BrandoZhang。我会试试的。