我有一个针对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标签?
答案 0 :(得分:0)
您可以添加Dockerfile作为参考吗?通常,ASP.NET Core Base映像是多目标的。根据docker版本,它可以为Windows或Linux提取特定版本的映像。您将需要针对Linux的映像在Linux计算机上运行