Как мне решить исключение «просмотр не найден» в проекте asp.net core mvc

Я пытаюсь создать тестовое приложение ASP.NET Core MVC, работающее на OSX, используя VS Code. Я получаю исключение «представление не найдено» при доступе к стандартному каталогу Home / index (или любым другим просмотрам, которые я пробовал)

Это конфигурация запуска

    public void Configure(IApplicationBuilder app) {

        // use for development
        app.UseDeveloperExceptionPage();
        app.UseDefaultFiles();
        app.UseStaticFiles();

        app.UseMvc( routes => {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}"
            );
        });
    }

И у меня есть вид, определенный вViews/Home/index.cshtmlи у меня есть следующие пакеты, включенные в project.json

"dependencies": {
"Microsoft.NETCore.App": {
  "version": "1.0.0-rc2-3002702",
  "type": "platform"
},
"Microsoft.AspNetCore.Razor.Tools" : "1.0.0-preview1-final",
"Microsoft.AspNetCore.Diagnostics": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Mvc": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0-rc2-final",
"Microsoft.AspNetCore.StaticFiles": "1.0.0-rc2-final",
"Microsoft.AspNetCore.Routing": "1.0.0-rc2-final"
},

И, наконец, это исключение, которое я получаю.

System.InvalidOperationException: The view 'Index' was not found. The following locations were searched:
    /Views/Home/Index.cshtml
    /Views/Shared/Index.cshtml
    at Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful(IEnumerable`1 originalLocations)
    at Microsoft.AspNetCore.Mvc.ViewResult.<ExecuteResultAsync>d__26.MoveNext()
    --- End of stack trace from previous location where exception was thrown --- ...

Любые предложения о том, что я мог бы пропустить?

 Lukasz Makowej30 мая 2016 г., 17:39
Пожалуйста, покажите нам код из вашего HomeController.
 Lukasz Makowej30 мая 2016 г., 17:40
И проверь имя файла ->index.cshtml ->Index.cshtml

Ответы на вопрос(8)

все работало отлично, если я запускал проект из Visual Studio, но после публикации проекта и запуска сdotnet Я получил сообщение об ошибке «Просмотр не найден», когда Identity Server попытался открыть окно «Вход в систему». Я уже проверил все остальное, упомянутое здесь, но это все еще не работало. Я наконец обнаружил, что проблема была в том, как я управлялdotnet команда. Я запускал его из родительской папки, на один уровень выше моего экземпляра Identity Server, и это влияло на корневой путь к контенту, например, при запуске этого

dotnet myWebFolder/MyIdentityServer.dll

дал мне следующий вывод при запуске Identity Server:

Таким образом, полный путь моей DLL в этом случае является C: \ inetpub \ aspnetcore \ myWebFolder \ MyIdentityServer.dll, и я запустилdotnet команда из папки C: \ inetpub \ aspnetcore \.

Чтобы получить правильный корень контента, я должен был убедиться, что я запустилdotnet Команда из той же папки, где находится dll, как в 'dotnet MyIdentityServer.dll`. Это изменение дало мне такой вывод:

Теперь мой корневой путь к содержимому указан правильно, и Identity Server находит представления входа в систему по адресу C: \ inetpub \ aspnetcore \ myWebFolder \ Views \ Account \ Login.cshtml.

кто боролся с этим, у меня была другая проблема, чем все вышеперечисленное. Моя локальная версия работала нормально, но живая производственная версия дала эту ошибку. Оказалось, что имена файлов Unix отличаются от тех, которые отображаются в Windows.

Git имеет неприятный параметр, который включен по умолчанию: core.ignorecasegit (вы можете проверить этот параметр в командной строке с помощьюconfig --get core.ignorecase)

Решение состояло в том, чтобы переименовать файлы во что-то другое (например, xxx.cs), зафиксировать и отправить, затем переименовать их обратно в исходный с правильным регистром / заглавными буквами и зафиксировать и снова нажать.

что я могу прикрепить изображения к комментарию) Мой взглядIndex.cshtml, опечатка с моей стороны. Смотрите прикрепленный скриншот

Мой контроллер настолько прост, насколько это возможно. Я получаю одинаковую ошибку как для индекса, так и для приветствия

using Microsoft.AspNetCore.Mvc;

namespace app1 {

    [Route("[controller]")]
    public class HomeController : Controller {

        // default action, configured in Startup.cs route
        public IActionResult Index() {
            // handles route /home
            return View();
        }

        [Route("welcome")]
        public IActionResult WelcomeActionDoesNotHaveToMatchName() {
            // handles router /home/welcome
            return View("Welcome"); 
        }
    }
}

месте (с правильным именем). Потом я вспомнил, что переименовал его раньше (и VS почему-то не спросил меня, хочу ли я изменить все ссылки как обычно). Поэтому я, наконец, удалил представление, затем сделал его снова, и это решило мою проблему.

localhost:<port>/graphql хотяView/GraphQL/Index.cshtml был в нужном месте. Мы получили ошибку, потому чтоwwwroot/bundle.js а такжеwwwroot/style.js был по ошибке не изначально совершено, так как наш.gitignore включеныwwwroot, Обнаружил его, проверив сетевой трафик и увидев, что эти файлы дают 404, а неIndex.cshtml сам.

Решение Вопроса

re в VS2015, а затем сравнил различия. Оказывается, я пропал.UseContentRoot(Directory.GetCurrentDirectory()) отWebHostBuilder в основном.

После добавления этого:

public static void Main(string[] args)
{
    new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseStartup<Startup>()
        .Build()
        .Run();
}

Затем я получил исключение в отношении пропавших без вестиpreserveCompilationContext, Однажды добавленный в project.json мой взгляд показывает правильно.

"buildOptions": {
    "preserveCompilationContext": true,
    "emitEntryPoint": true
},
 NucS25 янв. 2017 г., 11:54
В Ubuntu 16.04 звонитDirectory.GetCurrentDirectory() в некоторых ситуациях возвращает простой"/", использованиеPlatformServices.Default.Application.ApplicationBasePath вместо этого для кроссплатформенной поддержки из пространства именMicrosoft.Extensions.PlatformAbstractions

Встроенный ресурс который не включен в опубликованные файлы.

измененияEmbedded resource вContent решает мою проблему.

Я должен добавить в project.json это:

"publishOptions": {
    "include": [
        "wwwroot",
        "**/*.cshtml",
        "appsettings.json",
        "web.config"
    ]
},
 LatentDenis03 мая 2017 г., 14:54
Да, я пропал"**/*.cshtml",сейчас работает зыбь!
 Exocomp08 февр. 2017 г., 02:48
Спасибо приятель! Имеет смысл сейчас, когда я думаю об этом.

Ваш ответ на вопрос