.net core 如何从自定义web应用程序目录而不仅仅是根目录运行.NET核心API应用程序?

.net core 如何从自定义web应用程序目录而不仅仅是根目录运行.NET核心API应用程序?,.net-core,kestrel,.net Core,Kestrel,我有一个.NETCore2.0MVC和API应用程序。可以从web根目录访问该应用程序,例如localhost:51672/、localhost:51672/Home、localhost:51672/api/。。。。我希望有一个选项可以从不同的web应用程序目录运行,例如localhost:51672/custom、localhost:51672/custom/Home、localhost:51672/custom/api/ 我假设在Kestrel中或者在调用dotnet run时有一些选项,但

我有一个.NETCore2.0MVC和API应用程序。可以从web根目录访问该应用程序,例如localhost:51672/、localhost:51672/Home、localhost:51672/api/。。。。我希望有一个选项可以从不同的web应用程序目录运行,例如localhost:51672/custom、localhost:51672/custom/Home、localhost:51672/custom/api/

我假设在Kestrel中或者在调用dotnet run时有一些选项,但找不到它。不必修改代码中的多个位置以使其工作,更希望使用可配置或运行时选项,而不必在多个位置的代码中硬连接自定义根路径

下面使用自定义根目录,除了swagger

app.UseSwaggerUI(c =>
{
  c.SwaggerEndpoint("/swagger/v1/swagger.json", "FusionVM V1");
});

app.UseMvc( routes =>
{
   routes.MapRoute(
            name: "default",
            template: "custom/{controller=Home}/{action=Index}/{id?}");
            }
    );
对于WebAPI,我们能够使用控制器上的Route属性来实现这一点,尽管我们确实不希望在所有控制器中都指定根路径。在dev中,使用/whileon-on-production,可从自定义web应用目录获得

[Route("custom/api/[controller]")]
public class MyController : Controller
    

找到了一些有用的东西。在Startup.cs中添加了以下内容

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UsePathBase("/custom");
    app.UseStaticFiles("/custom");
...
这适用于MVC和Web Api。对于Swagger,必须修改其json端点

    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/custom/swagger/v1/swagger.json", "My API");
    });