現在、ServiceStack Razor でページをサイトのルートにレンダリングする際に問題が発生しています。次のエラーが発生しています
コンパイラ エラー メッセージ: CS0246: 型または名前空間名 'ViewPage' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?) public class @__CompiledTemplate : ViewPage {
私はサイトを始めたばかりで、ここに web.config の内容と剃刀のページがあります
これは、Web サイトのルートにある web.config ファイルです。
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
<buildProviders>
<add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor" />
</buildProviders>
</compilation>
<httpRuntime targetFramework="4.5" />
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
</httpHandlers>
</system.web>
<!-- Required for IIS 7.0 (and above?) -->
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="ServiceStack.Razor.ViewPage">
<namespaces>
<add namespace="ServiceStack.Html" />
<add namespace="ServiceStack.Razor" />
<add namespace="ServiceStack.Text" />
<add namespace="ServiceStack.OrmLite" />
<add namespace="FERNSWeb" />
</namespaces>
</pages>
</system.web.webPages.razor>
</configuration>
サイトのルートにある default.cshtml ファイルは次のとおりです。
@inherits ViewPage
This is the body
サイトのルートにある _Layout.cshtml
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>FERNS - @ViewBag.Title</title>
</head>
<body>
@RenderBody()
</body>
</html>
インテリセンスは、default.cshtml の「@inherits ViewPage」行の「ViewPage」エントリを色付けしません。行を「@inherits ServiceStack.Razor.ViewPage」に変更すると、インテリセンスは ViewPage エントリを色付けしますが、今回は例外であり、コンパイル エラーではありません。
例外の詳細: System.InvalidCastException: タイプ 'Razor.__CompiledTemplate' のオブジェクトをタイプ 'System.Web.IHttpHandler' にキャストできません。
[InvalidCastException: タイプ 'Razor.__CompiledTemplate' のオブジェクトをタイプ 'System.Web.IHttpHandler' にキャストできません。] System.Web.WebPages.WebPageHttpHandler.CreateFromVirtualPath(String virtualPath, VirtualPathFactoryManager virtualPathFactoryManager) +56 System.Web.WebPages.WebPageRoute .DoPostResolveRequestCache(HttpContextBase コンテキスト) +264 System.Web.WebPages.WebPageHttpModule.OnApplicationPostResolveRequestCache(オブジェクト送信者、EventArgs e) +89 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136 System.Web.HttpApplication .ExecuteStep(IExecutionStep ステップ、ブール値 & completedSynchronously) +69
奇妙な部分は、Default.cshtml と _Layout.cshtml ファイルを、テスト用に作成した Views フォルダーに移動すると、ページが "/views" URL の下で適切にレンダリングされることです。Views フォルダーには web.config ファイルがありません。