Asp.net mvc .NET Core 2.0应用程序-MVC在调试时工作,但不在docker容器中

Asp.net mvc .NET Core 2.0应用程序-MVC在调试时工作,但不在docker容器中,asp.net-mvc,docker,asp.net-core,.net-core,asp.net-core-mvc-2.0,Asp.net Mvc,Docker,Asp.net Core,.net Core,Asp.net Core Mvc 2.0,我已经构建了一个非常简单的.NET核心应用程序(target framework=2.0),它在调试时运行良好(localhost)…但是当我在prod server上的docker容器中运行时,除了MVC路由之外,其他一切都可以运行 Startup.cs public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplication

我已经构建了一个非常简单的.NET核心应用程序(target framework=2.0),它在调试时运行良好(localhost)…但是当我在prod server上的docker容器中运行时,除了MVC路由之外,其他一切都可以运行

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseStaticFiles();

    app.UseMvcWithDefaultRoute();

    app.Run(async (context) =>
    {
        await context.Response.WriteAsync("Environment name: " + env.EnvironmentName);
    });
}
app.UseStaticFiles()
工作正常……因为
/index.html
path返回相关文件。 另外,
app.Run()
命令也可以工作,并返回所有不调用静态文件的路由……我假设是因为
app.UseMvcWithDefaultRoute()中间件未被识别,因此它将传递给下一个/最终的中间件

下面是我的HomeController.cs

public class HomeController : Controller
{
    public string Index()
    {
        return "Hello world!!....from Controllers(folder)/HomeController(folder)/Index(function)";
    }
}
当我请求路由
IP/home/index
时,它应该返回Hello World消息……它在调试时执行,但在docker容器中运行时不执行

下面是我的docker文件:

来自microsoft/aspnetcore内部版本:2.0作为内部版本环境
WORKDIR/app
#复制csproj并恢复为不同的层
复制*.csproj/
运行dotnet还原
#复制所有其他内容并构建
复制/
运行dotnet publish-c Release-o out
#构建运行时映像
来自microsoft/aspnetcore:2.0
WORKDIR/app
复制--from=build env/app/out。
入口点[“dotnet”,“mpx.dll”]
更新:我将HomeController.cs索引方法更改为如下……但没有任何帮助

    public class HomeController : Controller
    {
        [HttpGet]
        public string Index()
        {
            return "Hello world!!....from Controllers(folder)/HomeController(folder)/Index(function)";
        }
    }

但是到底发生了什么,它会退回到内联中间件吗?正确-忽略所有MVC命令并转到app.Run()我没有答案,但是作为一种解决方法(抱歉!),为什么不尝试向Index方法添加一个[HttpGet]?.csproj文件的第一行=如@ricardopers所述,我必须用
[HttpGet]
[HttpPost]
等来装饰所有的路由,才能让它在Linux/Docker中工作。