ASP.NET Core 2.0 docker容器在Linux上崩溃,退出代码为132(SIGILL)

时间:2018-02-15 13:29:13

标签: c# asp.net linux docker asp.net-core-2.0

我有一个针对Linux的ASP.NET Core 2.0 Docker镜像。这在我的Windows开发机上运行良好。当我在Linux上运行此iamge作为docker容器时,它会在向正在运行的容器发出请求时崩溃。不添加任何日志条目,也不会生成异常。使用Docker CLI我可以看到容器已停止,退出代码为132,这似乎是' SIGILL'非法指令'。

在下面的测试文件中,添加

时会发生错误
asp-for="LoginCode"

在输入元素上。如果我把它排除在外,一切都运行良好。

Test.cshtml:

@model LoginViewModel

Test page running.
@{
    ViewData["Title"] = "Login";
}
<h1>@ViewData["Message"]</h1>

@try
{
    using (Html.BeginForm())
    {
        <input type="text" class="form-control" placeholder="Logincode" asp-for="LoginCode" />
    }
}
catch (Exception exc)
{
    exc.ToString();
}
public class LoginViewModel
{
    [Required]
    public string LoginCode { get; set; }
    [Required]
    public string Paswoord { get; set; }
}

public class HomeController : Controller
{
    public IActionResult Test()
    {
        return View("Test");
    }
}

Dockerfile:

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY MyProjectName/MyProjectName.csproj MyProjectName/
RUN dotnet restore
COPY . .
WORKDIR /src/MyProjectName
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MyProjectName.dll"]

这是Docker,ASP.NET Core中的错误,还是我的错误?我是否可以通过任何方式解决此问题或找出错误发生的位置?我在相同的Linux机器上运行类似的ASP.NET核心应用程序没有问题,他们使用asp-for标签?

1 个答案:

答案 0 :(得分:0)

您可以添加Dockerfile作为参考吗?通常,ASP.NET Core Base映像是多目标的。根据docker版本,它可以为Windows或Linux提取特定版本的映像。您将需要针对Linux的映像在Linux计算机上运行