- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我关注了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/
我是一名优秀的程序员,十分优秀!