C# ASP.NET MVC4未在IIS中呈现布局

C# ASP.NET MVC4未在IIS中呈现布局,c#,visual-studio-2010,windows-7,iis-7,asp.net-mvc-4,C#,Visual Studio 2010,Windows 7,Iis 7,Asp.net Mvc 4,在ASP.NET和MVC上工作了几年,以前从未见过这个 刚收到一台新机器。创建了一个新的MVC4 Web项目(用于Internet,在向导中)。我正在使用“开箱即用”的项目来测试所有设置和配置是否正确 如果我使用内置的web服务器从VisualStudio(2010)运行它,那么一切都很好。但是,我在IIS中设置了一个应用程序,它没有呈现布局(默认生成代码位于~/Views/Shared/_layout.cshtml的默认位置),但我确实获得了Index.cshtml(~/Views/Home/

在ASP.NET和MVC上工作了几年,以前从未见过这个

刚收到一台新机器。创建了一个新的MVC4 Web项目(用于Internet,在向导中)。我正在使用“开箱即用”的项目来测试所有设置和配置是否正确

如果我使用内置的web服务器从VisualStudio(2010)运行它,那么一切都很好。但是,我在IIS中设置了一个应用程序,它没有呈现布局(默认生成代码位于~/Views/Shared/_layout.cshtml的默认位置),但我确实获得了Index.cshtml(~/Views/Home/Index.cshtml)内容。布局中没有任何内容被呈现:没有html标记,没有样式,没有javascript,没有正文标记,什么都没有

基本诊断。。。IIS中未显示服务器错误。事件/应用程序日志中未记录任何错误。Chrome网络检查器工具中没有显示任何内容(甚至404s或500s)

有什么想法吗?我被难住了。。。有一种感觉,它非常非常简单

Index.cshtml(除了底部的测试代码之外的默认生成代码,只是为了确保正确拾取MVC DLL):

我们建议如下:
  • 开始 ASP.NET MVC为您提供了一种强大的、基于模式的方法来构建动态网站 实现关注点的清晰分离,并使您能够完全控制标记 用于愉快的敏捷开发。ASP.NET MVC包含许多功能,可以 快速、TDD友好的开发,用于创建使用 最新的网络标准。
  • 添加NuGet软件包并跳转开始您的编码 NuGet使安装和更新免费库和工具变得容易。
  • 查找网页托管 你可以很容易地找到一家提供正确功能组合的网络托管公司 以及您的应用程序的价格。
  • @foreach(新int[]{1,2,3,4,5}中的变量i) { 测试@i.ToString() }
    以Chrome渲染:

    我们建议如下:
    
  • 开始 ASP.NET MVC为您提供了一种强大的、基于模式的方法来构建动态网站 实现关注点的清晰分离,并使您能够完全控制标记 用于愉快的敏捷开发。ASP.NET MVC包含许多功能,可以 快速、TDD友好的开发,用于创建使用 最新的网络标准。
  • 添加NuGet软件包并跳转开始您的编码 NuGet使安装和更新免费库和工具变得容易。
  • 查找网页托管 你可以很容易地找到一家提供正确功能组合的网络托管公司 以及您的应用程序的价格。
  • 测试1 测试2 测试3 测试4 测试5
    听起来好像
    ~\Views\\u ViewStart.cshtml
    没有正确设置布局

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

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

    所以,这里是最终的解决方案(羞愧地垂下头):

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

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

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

    参考资料:


    其他可能的问题可能是:

  • 生成操作在_layout.cshtml文件上不正确(请确保将其设置为“Content”,以便将其包含在webdeploy包中)

  • 生成操作在_ViewStart.cshtml文件上不正确(请确保将其设置为“Content”,以便将其包含在webdeploy包中)

  • 确保这两个文件都包含在你的项目中(我知道这听起来很傻,确实如此,但它确实发生在我身上)


  • 这可能是权限问题,IIS用于运行你的应用程序池的用户没有访问该文件的权限。我将查看此问题并报告。是的,刚刚检查,权限似乎正确。尼克,你完全正确!我搞错了IUSR帐户(facepalm)的权限。谢谢是的,就是这样。它是创建新项目时生成的默认值。它在visualstudiodevweb服务器(casini)中也可以正常工作。当我试图通过IIS加载它时(我设置了一个网站来承载开发文件),断开连接的地方似乎就在这里。当你说IIS时,你是指IIS服务还是IIS Express?(尽管这两种方法都应该同样有效……)。我假设你的控制器返回一个视图<代码>返回视图()而不是部分
    return PartialView()
    Hi,我所说的IIS是指标准的、完整安装的IIS,而不是express版本。我通常只需在命令行中键入inetmgr,应用程序就会弹出。仔细检查控制器,它确实返回了一个视图()。在VisualStudio中烘焙的开发web服务器中工作得非常好,所以我猜这是某种配置上的玩弄。谢谢您的帮助。我明白了,在这个过程中,我学会了