代码之家  ›  专栏  ›  技术社区  ›  Efrain

在生产环境中使用路径前缀运行asp.net core应用程序

  •  1
  • Efrain  · 技术社区  · 6 年前

    asp.net核心

    dotnet MyWebApi.dll
    

    这将开始 倾听的人 localhost:5000 (每次违约)。 假设我有一个 ValuesController 倾听路径的人 /values/ . 这样我就可以从 http://localhost:5000/values/

    我现在需要的是添加一个前缀 api 对于api中的所有本地路径,因此values控制器将响应于: localhost:5000/api/values .

    显然,我可以在控制器的路由配置中更改它-但这是非常冗余的,需要做很多更改,因为我们有很多控制器,而且我们使用 [Route(..)] 控制器本身的属性。

    我见过 applicationUrl 中的属性 launchsettings.json 我的webapi项目中的文件。显然,它包含用于Visual Studio调试/启动的配置。在那里添加前缀(通过project properties>debug)可以很好地完成我需要的工作,但这只适用于从VisualStudio启动它(即。 dotnet run ). 在生产环境中,我只有 dotnet publish 可用的工件- launchsettings.json启动设置 dotnet [assembly] 启动命令(类似于dotnet run)。


    一点我为什么需要这个的背景: / 来自IIS,因为在站点的子文件夹中添加应用程序是常见的,这些站点处理路径前缀部分。我现在用docker部署我的应用程序,api有自己的容器,它是从上面的命令开始的——因此前缀丢失了,我需要以某种方式将其添加回来。

    1 回复  |  直到 6 年前
        1
  •  6
  •   Efrain    6 年前

    我找到了一个解决办法 Startup.cs UseBasePath :

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            // .. 
    
            app.UsePathBase(new PathString("/api"));
            app.UseMvc();
        }
    

    这允许从 localhost:5000/api/values localhost:5000/values

    推荐文章