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

лько что получили новый сервер Windows 2008 R2, и я пытаюсь настроить сайт MVC 3 в IIS 7.5 с помощью Razor View Engine. Я получаю странную ошибку при доступе к маршруту по умолчанию.

Страница макета "~ / Views / Shared / _Layout.cshtml" не найдена по следующему пути: "~ / Views / Shared / _Layout.cshtml".

Это странно, потому что я явно установил макет изнутри/views/home/index.cshtml вот так:

@{
  Layout = "~/Views/Shared/_Layout.cshtml";
}

Я на 100% уверен, что/views/shared/_layout.cshtml существует в файловой системе. Вот скриншот.

Если я удалюLayout = "~/Views/Shared/_Layout.cshtml"; с моей точки зрения, на странице будет отображаться содержимое/home/index.cshtml все само по себе (без какого-либо кода из_Layout.cshtml). Я также попытался установить макет с помощью_ViewStart.cshtml.

Кто-нибудь знает, почему MVC не сможет «найти» файл макета? Этот веб-сайт прекрасно работает при работе на встроенном веб-сервере для Visual Studio.

Вот мой след стека:

[HttpException (0x80004005): The layout page "~/Views/Shared/_Layout.cshtml" could not be found at the following path: "~/Views/Shared/_Layout.cshtml".]
   System.Web.WebPages.WebPageExecutingBase.NormalizeLayoutPagePath(String layoutPage) +204956
   System.Web.WebPages.WebPageBase.PopContext() +150
   System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +384
   System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +33
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +784900
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +265
   System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +784976
   System.Web.Mvc.Controller.ExecuteCore() +159
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +335
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +62
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +20
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +54
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +453
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +371

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

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