ServiceStack 视图 403(禁止访问)

ServiceStack View 403 (Forbidden)

我已经用几个视图设置了 Service Stack web 项目。我可以毫无问题地访问 /Default.cshtml 视图,但是当我尝试访问 /Views/ 文件夹中的任何内容时,出现以下错误:

Forbidden

Request.HttpMethod: GET
Request.PathInfo: /Views/MyView.cshtml
Request.QueryString: 
Request.RawUrl: /Views/MyView.cshtml

我已经查看了答案 here and here 以及许多其他答案,但我似乎无法弄明白。

这是我的观点:

@{
    ViewBag.Title = "Fake View";
}

<div>
    <div>Hello!</div>
</div>

还有我的Web.Config:

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <configSections>

        <sectionGroup name="jsEngineSwitcher">
            <section name="core" type="JavaScriptEngineSwitcher.Core.Configuration.CoreConfiguration, JavaScriptEngineSwitcher.Core" />
            <section name="msie" type="JavaScriptEngineSwitcher.Msie.Configuration.MsieConfiguration, JavaScriptEngineSwitcher.Msie" />
            <section name="v8" type="JavaScriptEngineSwitcher.V8.Configuration.V8Configuration, JavaScriptEngineSwitcher.V8" />
        </sectionGroup>

        <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor">
            <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor" requirePermission="false" />
            <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor" requirePermission="false" />
        </sectionGroup>

    </configSections>

    <system.web>
        <compilation targetFramework="4.5" debug="true">
            <buildProviders>
                <add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor" />
            </buildProviders>
        </compilation>
        <httpRuntime targetFramework="4.5" />
        <httpHandlers>
            <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" />
        </httpHandlers>
        <pages controlRenderingCompatibilityVersion="4.0" />
    </system.web>

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
        <validation validateIntegratedModeConfiguration="false" />
        <urlCompression doStaticCompression="true" doDynamicCompression="false" />
        <handlers>
            <add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
        </handlers>

        <security>
            <requestFiltering>
                <hiddenSegments>
                    <add segment="ClearScript.V8" />
                </hiddenSegments>
            </requestFiltering>
        </security>
    </system.webServer>

    <jsEngineSwitcher xmlns="http://tempuri.org/JavaScriptEngineSwitcher.Configuration.xsd">
        <core>
            <engines>
                <add name="MsieJsEngine" type="JavaScriptEngineSwitcher.Msie.MsieJsEngine, JavaScriptEngineSwitcher.Msie" />
                <add name="V8JsEngine" type="JavaScriptEngineSwitcher.V8.V8JsEngine, JavaScriptEngineSwitcher.V8" />
            </engines>
        </core>
    </jsEngineSwitcher>

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>

            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

    <appSettings>
        <add key="webPages:Enabled" value="false" />
    </appSettings>

    <system.web.webPages.razor>
        <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc" />
        <pages pageBaseType="ServiceStack.Razor.ViewPage">
            <namespaces>
                <add namespace="System" />
                <add namespace="ServiceStack" />
                <add namespace="ServiceStack.Html" />
                <add namespace="ServiceStack.Razor" />
                <add namespace="ServiceStack.Text" />
                <add namespace="ServiceStack.OrmLite" />
                <add namespace="ConnectDevelop.Configuration.Web" />
            </namespaces>
        </pages>
    </system.web.webPages.razor>
</configuration>

我还在请求的末尾添加了 ?debug=requestinfo,但我在输出中看不到任何明显的错误。

如有任何帮助,我们将不胜感激。

查看Views vs Content Pages之间的区别,即/Views文件夹是一个特殊文件夹,用于仅使用服务结果执行的视图页面(即类似于ASP.NET MVC控制器 + 视图)。

基本上/Views中的Razor页面不能直接调用,而/Views以外的razor页面只能直接调用。