网站不能执行_ViewStart.CSHTML或查找布局
本文关键字:查找 布局 CSHTML ViewStart 不能 执行 网站 | 更新日期: 2023-09-27 18:10:56
我有两个环境:开发和QA。都运行Windows Server 2012 R2。我有一个MVC 4网站设置为现有的经典ASP网站下的应用程序。(现有的ASP网站没有自己的Web。配置文件。)
除了机器名称和IP地址外,它们在Dev和QA中的配置完全相同。它们都在运行完全相同的构建。
HomeController.cs文件非常简单: public ActionResult Index()
{
return View();
}
索引。cshtml文件也一样简单:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
/视图/_Layout.cshtml :
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
</head>
<body>
@RenderBody()
</body>
</html>
/视图/_ViewStart.cshtml :
@{
Layout = "~/Views/_Layout.cshtml";
}
在Dev服务器上,当我访问我的站点:http://dev/MySite/Home/Index/
正确执行_ViewStart。cshtml并使用默认的_Layout。cshtml已定义:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<h2>Index</h2>
</body>
</html>
在QA服务器上,当我进入我的网站:http://qa/MySite/Home/Index/
它只是呈现这个:
<h2>Index</h2>
我比较了IIS配置(甚至将它们导出为应用程序以查看XML中的设置,它们与计算机名称完全相同)。我编辑了_Layout。cshtml和_ViewStart。cshtml抛出异常,但它们永远不会被执行。
让事情变得更奇怪的是,如果我试图通过在QA服务器上设置Layout = "~/Views/Layout.cshtml";
来手动设置视图中的布局,我得到以下错误:
布局页面"~/Views/_Layout. view"~/Views/_Layout.cshtml".
在Dev上,我可以这样手动设置布局,效果很好。
如果我在Dev和QA上执行@Url.Content("~/Views/_Layout.cshtml")
,我得到以下输出:
/MySite/Views/_Layout.cshtml
是什么可能导致这种情况?我们有其他MVC 4站点作为应用程序在这些服务器上运行在同一个网站下,他们运行得很好。
IT部门将站点的匿名身份验证配置为使用特定的用户帐户,而不是应用程序池身份。不幸的是,安装新应用程序的文件夹没有为QA环境中的IIS_IUSRS提供权限。
这允许网站继续工作一半和渲染视图,但它不能执行_ViewStart。