C# ASP.NET MVC4未在IIS中呈现布局
在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):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为您提供了一种强大的、基于模式的方法来构建动态网站
实现关注点的清晰分离,并使您能够完全控制标记
用于愉快的敏捷开发。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或重定向以登录这些文件(我尝试了一些关于帐户和权限的不同解决方案) 参考资料:
这可能是权限问题,IIS用于运行你的应用程序池的用户没有访问该文件的权限。我将查看此问题并报告。是的,刚刚检查,权限似乎正确。尼克,你完全正确!我搞错了IUSR帐户(facepalm)的权限。谢谢是的,就是这样。它是创建新项目时生成的默认值。它在visualstudiodevweb服务器(casini)中也可以正常工作。当我试图通过IIS加载它时(我设置了一个网站来承载开发文件),断开连接的地方似乎就在这里。当你说IIS时,你是指IIS服务还是IIS Express?(尽管这两种方法都应该同样有效……)。我假设你的控制器返回一个视图<代码>返回视图()代码>而不是部分
return PartialView()
Hi,我所说的IIS是指标准的、完整安装的IIS,而不是express版本。我通常只需在命令行中键入inetmgr,应用程序就会弹出。仔细检查控制器,它确实返回了一个视图()。在VisualStudio中烘焙的开发web服务器中工作得非常好,所以我猜这是某种配置上的玩弄。谢谢您的帮助。我明白了,在这个过程中,我学会了