ASP.NET MVC4仅显示IIS7上的@RenderBody内容
设置:我有一台运行Windows 7的虚拟机,我安装了IIS7,MVC3和带有Web平台安装程序的MVC4。我在IIS中使用.NET 4.0应用程序池添加了一个新网站,然后使用Visual Studio 2012发布选项将MVC4 Web应用程序发布到网站的根目录。
问题是我得到的唯一输出是各个视图中的任何内容。没有布局,只有@RenderBody内容。
使用Visual Studio进行预览时,它可以正常工作。
这是我的_Layout.cshtml:
<!DOCTYPE html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
<link rel="shortcut icon" type="image/x-icon" href="~/favicon.ico">
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<!-- this is decorative -->
<div class="topbar"></div>
<div class="row header">
<div class="five columns logo">
<a href="@Url.Action("Index", "Home")">
<img src="@Url.Content("~/Content/images/logo.png")">
</a>
</div>
<div class="seven columns nav">
@Html.Partial("_TopNavigationPartial")
</div>
</div>
@RenderBody()
<div class="row">
<div class="twelve columns box-padding">
<div class="box">
<div class="row footer">
<div class="six columns copyright">© 2013 snip.</div>
<div class="six columns nav">
@Html.Partial("_BottomNavigationPartial")
</div>
</div>
</div>
</div>
</div>
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
所有输出的都是视图中的内容,例如:
<div class="row">
<div class="twelve columns box-padding">
<div class="box">
<h1>Home</h1>
<p>You are here: Home/Index</p>
</div>
</div>
</div>
任何人都知道为什么会这样?
可能只是我没有正确设置IIS7。
修改:我刚上传了Internet application
,它完成了同样的事情。仅输出视图内容。所以它绝对是IIS中的东西。
编辑2:我在IIS中设置了Internet application
作为应用程序,但它仍然只返回视图内容。怪异。
编辑3:让它工作,不确定如何。 http://i.imgur.com/ZpKb4P5.gif
答案 0 :(得分:1)
管理来解决这个问题。不确定究竟是什么问题,但我正在制作一个新的网站,然后将已发布的文件拖入其中,但这不起作用。
然后我在默认网站上添加了一个应用程序,但是后来我发现this post解释了默认网站本身就是一个应用程序。
所以最后我只是将发布的文件复制到默认的根目录中,然后就可以了。