ASP.. NET MVC4不能在IIS中呈现布局

本文关键字:布局 IIS NET MVC4 不能 ASP | 更新日期: 2023-09-27 18:01:22

一直在使用ASP。. NET和MVC几年了,以前从未见过这个…

刚收到一台新机器。创建了一个新的MVC4 Web项目(在向导中用于Internet)。我使用项目的权利"开箱即用"来测试一切都是正确的设置和配置。

如果我使用内置的web服务器从Visual Studio(2010)运行它,那么一切都很好。然而,我在IIS中设置了一个应用程序,它没有渲染布局(默认生成的代码在默认位置~/Views/Shared/_Layout.cshtml),但我确实得到了索引。cshtml (~/Views/Home/Index.cshtml)内容布局中没有任何内容被渲染:没有html标签,没有样式,没有javascript,没有body标签,什么都没有。

Did the basic diagnostics…IIS中没有显示服务器错误。在事件/应用程序日志中没有记录为错误的内容。在Chrome网络检查工具中没有显示任何内容(甚至404或500也没有)

任何想法?我难住了……有一种感觉,这是一件非常非常简单的事情。

索引。cshtml(默认生成的代码,除了我在底部的测试代码,只是为了确保MVC dll被正确拾取):

<h3>We suggest the following:</h3>
<ol class="round">
    <li class="one">
        <h5>Getting Started</h5>
        ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
        enables a clean separation of concerns and that gives you full control over markup
        for enjoyable, agile development. ASP.NET MVC includes many features that enable
        fast, TDD-friendly development for creating sophisticated applications that use
        the latest web standards.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245151">Learn more…</a>
    </li>
    <li class="two">
        <h5>Add NuGet packages and jump-start your coding</h5>
        NuGet makes it easy to install and update free libraries and tools.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245153">Learn more…</a>
    </li>
    <li class="three">
        <h5>Find Web Hosting</h5>
        You can easily find a web hosting company that offers the right mix of features
        and price for your applications.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245157">Learn more…</a>
    </li>
</ol>
@foreach(var i in new int[]{1,2,3,4,5})
{
    <div>Test @i.ToString()</div>
}

Chrome渲染:

<h3>We suggest the following:</h3>
<ol class="round">
    <li class="one">
        <h5>Getting Started</h5>
        ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
        enables a clean separation of concerns and that gives you full control over markup
        for enjoyable, agile development. ASP.NET MVC includes many features that enable
        fast, TDD-friendly development for creating sophisticated applications that use
        the latest web standards.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245151">Learn more…</a>
    </li>
    <li class="two">
        <h5>Add NuGet packages and jump-start your coding</h5>
        NuGet makes it easy to install and update free libraries and tools.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245153">Learn more…</a>
    </li>
    <li class="three">
        <h5>Find Web Hosting</h5>
        You can easily find a web hosting company that offers the right mix of features
        and price for your applications.
        <a href="http://go.microsoft.com/fwlink/?LinkId=245157">Learn more…</a>
    </li>
</ol>
    <div>Test 1</div>
    <div>Test 2</div>
    <div>Test 3</div>
    <div>Test 4</div>
    <div>Test 5</div>

ASP.. NET MVC4不能在IIS中呈现布局

所以,这是最终的解决方案(hang head in shame):

首先,打开IIS,单击web站点,打开IIS组下的身份验证设置,单击匿名身份验证,然后单击右侧操作面板中的"编辑"。在这里,请注意匿名验证是如何执行的。它可以是一个特定的用户或应用程序池目录。

无论哪种方式,您都需要确保此帐户在您提供站点的目录的安全对话框中具有适当的权限。在我的情况下(我认为这是默认情况,因为这是一个全新的盒子),它将被设置为特定的用户:IUSR。如前所述,给该用户适当的权限来读取/执行文件,您应该就可以了。

是什么提示我这是,我试图在网站上加载静态文件,如css或图像,我得到404或重定向登录这些文件(我正在尝试关于帐户和权限的几个不同的解决方案)。

引用:

  • https://stackoverflow.com/a/10834906/298758
  • https://serverfault.com/questions/260777/why-isnt-iis-serving-my-static-css-js-files

听起来~'Views'_ViewStart.cshtml没有正确设置布局。

通常它的内容应该是这样的…

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

其他可能的问题包括:

  1. 构建操作在_layout上不正确。

  2. cshtml文件(确保它被设置为"Content",以便它被包含在webdeploy包中)。
  3. 构建操作在_ViewStart上不正确。

  4. cshtml文件(确保它被设置为"Content",以便它被包含在webdeploy包中)。
  5. 确保这两个文件都包含在您的项目中(我知道这听起来很傻,但它确实发生在我身上)。