我有一个asp.net核心 Web API,可以从命令行启动(在Linux主机上)
dotnet MyWebApi.dll
Run Code Online (Sandbox Code Playgroud)
这将启动一些监听的Web服务器localhost:5000(默认情况下)。假设我有一个ValuesController侦听path的对象/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有其自己的容器,该容器以上述命令开头-因此缺少前缀,因此我需要以某种方式将其重新添加。