azure - 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 请求路由到正确的端点?
解决方案
推荐阅读
- java - 无法在 Intelij 中运行程序
- oracle - 如何从函数中为“select ... IN ..”语句返回列表
- python - Python 可变和不可变
- java - BluetoothGatt.discoverservices 不发现服务
- c# - 带有和不带有 HTTP 标头的 Azure Face API SDK 重载
- java - 如何解决 VSCode 中的“无法解析导入 javafx”?
- unit-testing - 如何为 x86 项目运行单元测试
- swift - Watchkit 基于页面的导航 - reloadRootPageControllers 不起作用
- react-native - 添加新项目时防止 FlatList 滚动
- php - 如何以及在何处设置会话变量(如果可能,一次)