ServiceStack View 403(禁止)

时间:2015-06-11 01:39:02

标签: razor servicestack servicestack-razor

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

Forbidden

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

我查看了答案herehere以及其他许多答案,但我似乎无法弄清楚这一点。

以下是我的观点:

@{
    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但我在输出中看不到任何明显的错误。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

基本上/Views中的Razor页面无法直接调用,而/Views之外的剃刀页面只能直接调用。