gpt4 book ai didi

linux - "The directory name/app/Views/is invalid"在使用 docker 的 ASP.NET Core 部署上

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:36 25 4
gpt4 key购买 nike

我关注了this使用 Docker 设置高性能 ASP.NET Core 部署的文章。这一直有效,直到我尝试使用 docker run 启动容器,它调用 dotnet MyAppName.dll 我遇到了一个异常(exception),View 路径是不存在:

Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: The directory name /app/Views/ is invalid.

没错,因为在 dotnet publish 创建的文件夹中只有 dll 文件,没有 View 文件夹:

user@server:/etc/jenkins/workspace/App# ll publish-output | grep View
-rwxr--r-- 1 root root 237K Aug 31 19:26 Microsoft.AspNetCore.Mvc.ViewFeatures.dll

我无法理解这一点,因为 View 文件夹也像 wwwroot 一样包含在 publishOptions 中,但它也丢失了:

  "publishOptions": {
"include": [
"wwwroot",
"Views/**/*.cshtml",
"Areas/**/*.cshtml"
]
},

我还尝试了 "Views" 而不是 "Views/**/*.cshtml" 但没有用。根据我的理解,那些 publishOptions 应该导致在使用 dotnet publish 时将这些文件夹复制到发布目录。

我做错了什么?

我正在使用 microsoft/aspnetcore-build:1.0.1 图像进行构建,并使用 microsoft/aspnetcore:1.0.1 启动应用程序,就像推荐的一样文章中练习。

更新似乎只在 linux 上有问题。我的 Win10 开发机器工作正常,我从主应用程序和区域中按预期发布了所有 View 文件夹。

更新 #2 使用 aspnetcore-build repo 上的示例在 docker hub 上,它也不起作用。

更新 #3 我使用 Visual Studio 在我的 Windows 10 开发机器上创建了一个新的 ASP.NET Core MVC 项目,然后将其传输到 linux 机器:不工作,缺少 View 。

更新 #4 直接在 linux 机器上使用 dotnet new -t web 创建了一个新应用:工作正常!

更新 #5 我在 Windows 机器上运行 dotnet new -t web,将创建​​的文件夹移动到 linux 服务器:不工作 - 奇怪...

最佳答案

问题是文档中的点之前缺少空格,它应该引用当前文件夹。

错误(从 docker 镜像的描述中 1:1 复制)

RUN dotnet publish --output /out/. --configuration Release

正确

RUN dotnet publish --output /out/ . --configuration Release

这是缺少的空间:--output/out/{Space}

关于linux - "The directory name/app/Views/is invalid"在使用 docker 的 ASP.NET Core 部署上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41306314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com