网站不能执行_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站点作为应用程序在这些服务器上运行在同一个网站下,他们运行得很好。

网站不能执行_ViewStart.CSHTML或查找布局

IT部门将站点的匿名身份验证配置为使用特定的用户帐户,而不是应用程序池身份。不幸的是,安装新应用程序的文件夹没有为QA环境中的IIS_IUSRS提供权限。

这允许网站继续工作一半和渲染视图,但它不能执行_ViewStart。