2016-12-23 5 views
0

Я выполнил статью this, чтобы настроить развертывание ядра ASP.NET Core с использованием Docker. Это работает, пока я пытаюсь запустить контейнер с помощью docker run, который вызывает Там я получил исключение, что View путь не существует:«Имя каталога/приложение/Представления/недействительно» в развертывании основного ядра ASP.NET с использованием докеры

Необработанное исключение: System.Reflection.TargetInvocationException: Исключение было брошено по цель вызова. ---> System.ArgumentException: имя каталога/app/Views/недействительно.

И это правда, потому что в папке, созданной dotnet publish области только DLL файлы и нет Просмотр папки:

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

Я не могу понять это, потому что представление папки включена в publishOptions как Wwwroot тоже , который также отсутствует:

"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 работает отлично, там я получаю любые папки просмотра, опубликованные из основного приложения и областей, как ожидалось.

ОБНОВЛЕНИЕ # 2 Используя примеры на aspnetcore-build repo на докере-хабе, его тоже не работает.

UPDATE # 3 Я создал новый проект ASP.NET Core MVC на своей машине разработки под Windows 10 с помощью Visual Studio, а затем передал ее в окно linux: не работает, представления отсутствуют.

ОБНОВЛЕНИЕ # 4 Создано новое приложение с использованием dotnet new -t web непосредственно в окне linux: работает, как и ожидалось!

UPDATE # 5 я побежал dotnet new -t web на машине Windows, переместил созданную папку на сервере Linux: не работает - Странно ...

ответ

0

Проблема была недостающее пространство в документации перед точкой, который должен ссылаться на текущую папку.

Wrong (1: 1 копия описания Docker изображения)

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

Правильная

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

Здесь пространство отсутствует: --output/из/{Пробел}.