【发布时间】:2015-09-01 22:58:13
【问题描述】:
我有两个环境:Dev 和 QA。两者都运行 Windows Server 2012 R2。我有一个 MVC 4 站点设置为现有经典 ASP 站点下的应用程序。 (现有的 ASP 站点没有自己的 Web.Config 文件。)
除了机器名称和 IP 地址之外,它们在 Dev 和 QA 中的配置完全相同。它们都运行完全相同的构建。
HomeController.cs 文件非常简单:
public ActionResult Index()
{
return View();
}
Index.cshtml 文件同样简单:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
/Views/_Layout.cshtml:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
</head>
<body>
@RenderBody()
</body>
</html>
/Views/_ViewStart.cshtml:
@{
Layout = "~/Views/_Layout.cshtml";
}
在开发服务器上,当我访问我的站点时: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.cshtml”:“~/Views/_Layout.cshtml”。
在 Dev 上,我可以通过这种方式手动设置布局,效果很好。
如果我在 Dev 和 QA 上执行 @Url.Content("~/Views/_Layout.cshtml"),我会得到以下输出:
/MySite/Views/_Layout.cshtml
这可能是什么原因造成的?我们有其他 MVC 4 站点作为应用程序在同一网站下的这些服务器上运行,它们运行得非常好。
【问题讨论】:
标签: c# .net asp.net-mvc asp.net-mvc-4 razor