【问题标题】:How to run a .NET Core API app from a custom web application directory, not just root?如何从自定义 Web 应用程序目录运行 .NET Core API 应用程序,而不仅仅是根目录?
【发布时间】:2018-06-23 14:19:37
【问题描述】:

我有一个 .NET Core 2.0 MVC 和 API 应用程序。该应用程序可从 Web 根目录访问,例如localhost:51672/, localhost:51672/Home, localhost:51672/api/.... 我想选择从不同的 Web 应用程序目录运行,例如 localhost:51672/custom, localhost:51672/custom/主页,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?}");
            }
    );

对于 web api,能够使用 Contoller 上的 Route 属性使其工作,但实际上不必在所有控制器中指定根路径。在 dev 中,在生产环境中使用“/”,可从自定义 Web 应用程序目录获得。

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

【问题讨论】:

    标签: .net-core kestrel


    【解决方案1】:

    找到了一些有用的东西。在 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");
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 2011-02-23
      相关资源
      最近更新 更多