在Windows Pro 8.1上的VS Pro 2013中创建了一个Web项目,其上放置了非MVC Razor页面。可以在IIS Express和本地IIS(8.5)中正确查看.cshtml
页面。
该项目在另一台Windows Pro 8.1计算机上加载到VS Pro 2015中,但无法在IIS Express或本地IIS中呈现。显示以下错误:
您已请求的页面类型未被提供,因为它已被明确禁止。扩展程序' .cshtml'可能不正确。请查看下面的网址,确保拼写正确。*
这可能是由于2015年与2013年的构建输出不同,还是由于网络服务器配置的差异(假设IIS Express行为与本地IIS相似)?有什么可以解决这个问题?
附录
我发现VS 2015在名为 .vs \ config \ applicationhost.config 的解决方案中添加了一个文件(在解决方案级别添加了文件夹)。这里包含整个文件太大了,所以我只能显示它的一些内容。这可能与问题有关吗?
<add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
答案 0 :(得分:0)
该项目是作为网站创建的,而不是作为MVC项目创建的。在IIS或IIS Express中直接提供cshtml文件似乎有问题。一旦转换为MVC项目,它一切正常。它曾经工作似乎是由于对IIS内置的cshtml的一些微弱的支持,在Web应用程序之外并没有真正保证。
Visual Studio模板并没有真正适应温和的学习路径 - 在某些方面太过光秃,在其他方面太过于无法应对。经过一些试验和错误,我已经编写了一些样本,希望对新手更有帮助: