jes*_*vin 16 iis-7.5 razor asp.net-mvc-3
我们刚刚获得了一台新的Windows 2008 R2服务器,我正在尝试使用Razor View Engine在IIS 7.5中建立一个MVC 3站点.当我访问默认路由时,我收到一个奇怪的错误.
在以下路径中找不到布局页面"〜/ Views/Shared/_Layout.cshtml":"〜/ Views/Shared/_Layout.cshtml".
这很奇怪,因为我从内部明确设置了Layout,/views/home/index.cshtml如下所示:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)
我100%肯定/views/shared/_layout.cshtml文件系统中存在.这是一个截图.

如果我Layout = "~/Views/Shared/_Layout.cshtml";从我的视图中删除,页面将自动呈现/home/index.cshtml所有内容(没有任何代码_Layout.cshtml).我也试过使用设置布局_ViewStart.cshtml.
任何人都知道为什么MVC无法"找到"布局文件?在Visual Studio的内置Web服务器中运行时,该网站运行良好.
这是我的堆栈跟踪:
[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
Run Code Online (Sandbox Code Playgroud)
que*_*rin 21
好像你可能有权限问题.根据您提供的信息,它似乎是无法找到_Layout.cshtml文件的最可能原因.
对于Server 2008和IIS 7,应用程序池具有用于ACL的名称(名为IIS AppPool {App Pool Name}),并且这些标识是IIS_IUSRS组的一部分.此外,您的默认inetpub/wwwroot目录将具有IIS_ISRS组的读取权限.因此,如果您没有获得所需的权限,我认为应用程序池实际上并没有使用正确的标识运行.
身份可能不正确的一个原因是匿名身份验证用户身份的设置.进入站点(或整个服务器)的身份验证控制,并编辑匿名身份验证规则以作为应用程序池标识运行.
这是一个猜测,但似乎这个家伙几乎完全相同的问题.

| 归档时间: |
|
| 查看次数: |
17275 次 |
| 最近记录: |