.net核心api和自定义Web应用程序目录,而不仅仅是root

时间:2018-01-14 22:19:11

标签: .net core kestrel

我有一个.net核心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,但无法找到它。不希望在代码中修改多个位置以使其工作,更喜欢可配置或运行时选项,而不必在代码中的几个位置硬连接自定义根路径。

下面使用" custom" root除了招摇

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属性使其工作,但实际上不希望不必在所有控制器中指定根路径。在开发中,使用" /"在自定义Web应用程序目录中提供的生产时。

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

1 个答案:

答案 0 :(得分: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");
    });