我有一个asp.net core web api,我可以从命令行开始(在 linux 主机上)
dotnet MyWebApi.dll
这将启动一些监听的网络服务器localhost:5000
(默认情况下)。假设我有一个ValuesController
监听路径/values/
。因此,我可以从中获得我的价值观http://localhost:5000/values/
,一切都很好。
我现在需要的是为api
api 中的所有本地路径添加一个前缀,因此值控制器将响应:localhost:5000/api/values
。
我找不到一种优雅的方式来做到这一点。显然我可以在控制器的路由配置中更改它——但这是非常多余的,需要进行大量更改,因为我们有很多控制器,并且我们[Route(..)]
在控制器本身上使用属性。
我已经在我的 webapi 项目applicationUrl
的文件中看到了该属性。launchsettings.json
显然,它包含用于 Visual Studio 调试/启动的配置。在那里添加一个前缀(通过项目属性>调试)工作正常并且完全符合我的需要,但这仅适用于从 VisualStudio(即dotnet run
)启动它。在生产环境中,我只有dotnet publish
可用的工件 - launchsettings.json
文件没有复制到那里,似乎没有办法将这样的文件提供给dotnet [assembly]
启动命令(如 dotnet run)。
为什么我需要这个的一些背景知识:让 api 控制器监听的模式/
来自 IIS,因为在站点的子文件夹中添加应用程序是很常见的,它处理路径前缀部分。我现在使用 docker 部署我的应用程序,并且 api 有自己的容器,它从上面的命令开始 - 因此缺少前缀,我需要以某种方式将其添加回来。