本文介绍了布局网页" {}路径"无法找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们刚买了一台新的Windows 2008 R2服务器,我试图建立在IIS 7.5 MVC 3网站剃刀视图引擎。我得到一个奇怪的错误,当我访问的默认路由。

This is strange because I explicitly set the Layout from within /views/home/index.cshtml like so:

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

I am 100% certain that the /views/shared/_layout.cshtml exists in the file system. Here's a screenshot.

If I remove the Layout = "~/Views/Shared/_Layout.cshtml"; from my view, the page will render out the contents of /home/index.cshtml all by itself (without any of the code from _Layout.cshtml). I have also tried setting the layout using _ViewStart.cshtml.

Anyone know why MVC wouldn't be able to "find" the layout file? This website works perfectly fine when running in the built-in web server for visual studio.

Here's my stack trace:

[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
解决方案

It seems like you probably have a permissions issue. With the info you've given, it seems like the most likely cause of not being able to find the _Layout.cshtml file.

With Server 2008 and IIS 7, application pool's have their own identity used for ACL's (named IIS AppPool{App Pool Name}), and these identities are made part of the IIS_IUSRS group. Also, your default inetpub/wwwroot directory will have read permissions for the IIS_ISRS group. So, if your not getting the permissions you need, I would think that the App pool is not in fact running with the correct identity.

One reason the identity may be incorrect is the setting for Anonymous Authentication user identity. Go into the Authentication control for the site (or the whole server) and edit the Anonymous Authentication rule to run as the Application Pool Identity.

This is a bit of a guess, but it seemed this fellow had nearly the exact same issue.

这篇关于布局网页&QUOT; {}路径&QUOT;无法找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-27 03:12
查看更多