在VS 2013和2015中使用Razor而不使用MVC

在VS 2013和2015中使用Razor而不使用MVC,razor,Razor,VS Pro 2013在Windows Pro 8.1上创建了一个web项目,其中放置了一个非MVC Razor页面。可以在IIS Express和本地IIS(8.5)中正确查看.cshtml页面 该项目已加载到另一台Windows Pro 8.1计算机上的VS Pro 2015中,但无法在IIS Express或本地IIS中呈现。显示了以下错误: 您请求的页面类型未被提供,因为它已被明确禁止。扩展名“.cshtml”可能不正确。请查看下面的URL,并确保其拼写正确* 这可能是由于2015年与2

VS Pro 2013在Windows Pro 8.1上创建了一个web项目,其中放置了一个非MVC Razor页面。可以在IIS Express和本地IIS(8.5)中正确查看
.cshtml
页面

该项目已加载到另一台Windows Pro 8.1计算机上的VS Pro 2015中,但无法在IIS Express或本地IIS中呈现。显示了以下错误:

您请求的页面类型未被提供,因为它已被明确禁止。扩展名“.cshtml”可能不正确。请查看下面的URL,并确保其拼写正确*

这可能是由于2015年与2013年的构建输出不同,还是由于Web服务器配置中被忽略的差异(假设IIS Express行为与本地IIS相似)?什么可以解释这个问题

            <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" />
附录

我发现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" />

该项目是作为网站而不是MVC项目创建的。直接在IIS或IIS Express中提供cshtml文件似乎有问题。一旦转换成MVC项目,它就可以正常工作。它之所以能够工作,似乎是因为IIS中内置了一些对cshtml的微弱支持,而这在web应用程序之外并没有得到真正的保证

VisualStudio模板实际上并不适合温和的学习方式——在某些方面过于简陋,在另一些方面过于势不可挡。经过一些尝试和错误,我已经制作了一些样本,希望对新手更有帮助:


请检查
web.config
中的标记,并查看
下是否存在键
@AVD,2013年它在没有该标记的情况下工作;我已经找到了2015年构建的建议并采取了行动,但没有任何效果,但谢谢。