首页 > 解决方案 > Azure AppService URL 重写

问题描述

我尝试在 Azure 的一个 AppService 中托管三个 Web 应用程序。其中一个 Web 应用程序是一个简单的 SPA Angular 应用程序,另外两个是 ASP.NET Core WebAPI 应用程序。

两个 WebAPI 应用程序中的每一个都在代码中定义了它们的路由:

/api/{endpoint}

这些路线不能更改,必须保持原样。

在我的 AppService 中,我定义了多个虚拟目录来托管所有这些单独的应用程序。

目录结构如下; 应用服务目录结构

Angular 应用程序托管在 /atlanta 和 /colton 虚拟目录中,可以毫无问题地访问。

每个 WebAPI 应用程序都托管在其他两个虚拟目录中。

/{region}/api当 Angular 应用程序向其中一个 API 发出请求时,它会向其中一个或/{region}/security分别发出 HTTP 请求。

我遇到的问题是 API 返回 404 错误,因为/{region}/security/{endpoint}未定义路由。正确的路线是/api/{endpoint}

我很确定我可以通过在我的 web.config 中使用 URL 重写来解决这个问题,但到目前为止,我一直无法正确完成这项工作。这是我的 URL 重写尝试之一;

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <rewrite>
        <globalRules>
          <rule name="SecurityAPI">
            <match url="/atlanta/security/*" />
            <action type="Rewrite" url="/api/{R:0}"  />
          </rule>
        </globalRules>
      </rewrite>
      <handlers>
        <add name="aspNetCore" path="/atlanta/security/*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments="HMS.Security.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>

如何解决此问题并让 HTTP 请求路由到正确的端点?

标签: azureiisurl-rewriting.net-core

解决方案


推荐阅读