在VS 2013和2015中使用没有MVC的Razor

时间:2015-07-31 02:36:43

标签: razor

在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" />

1 个答案:

答案 0 :(得分:0)

该项目是作为网站创建的,而不是作为MVC项目创建的。在IIS或IIS Express中直接提供cshtml文件似乎有问题。一旦转换为MVC项目,它一切正常。它曾经工作似乎是由于对IIS内置的cshtml的一些微弱的支持,在Web应用程序之外并没有真正保证。

Visual Studio模板并没有真正适应温和的学习路径 - 在某些方面太过光秃,在其他方面太过于无法应对。经过一些试验和错误,我已经编写了一些样本,希望对新手更有帮助:

https://github.com/Zenilogix-Carl/Samples