私は OpenRasta 2.0 を使用しており、コンソール アプリケーション内でホストしています。
このセットアップからいくつかの静的な HTML ページと JavaScript ファイルを返せるようにしたいと考えています。たとえば、次のようになります。
ファイルは完全に静的です。つまり、ハンドラやリソースは必要ありません。
プロジェクトに適切なファイルを追加し、最初に次の構文を試しました。
ResourceSpace.Has
.ResourcesOfType<object>()
.AtUri("/")
.HandledBy<HtmlHandler>()
.RenderedByAspx("~/Views/IndexView.aspx");
.aspx ファイルはプロジェクトの 'Views' フォルダーの下に追加され、ビルド アクションが 'Embedded Resource' に設定されます。これにより、仮想パスを解決しようとすると、実行時に NullReferenceException が発生します。ファイルのビルド アクションを「コンパイル」に設定すると、コンパイルされません。コンソール プロジェクトが ASPX を理解していないためだと思います。
WebFormsコーデックを参照する場合、これを利用できる次の簡略構文も試しました。
ResourceSpace.Has
.TheUri("/jquery.js")
.ForThePage("~/Views/jquery.js");
しかし、これは私の最初のアプローチと同じ問題を抱えていますが、ダミーの Handler の必要性はなくなります。私の知る限り、WebForms コーデックはコンソール アプリケーション内では使用できません。これは、ASPX ファイルをコンパイルできないためです。
これはビュー テンプレートが埋め込まれていることを想定しているため、Razor コーデックを使用して HTML を返すことができました。ただし、同じ手法を使用しても適切なメディア タイプの JavaScript ファイルを返すことができず、静的ファイルを @resource が定義された .cshtml ファイルに変換する必要がありました。
OpenRasta を使用して静的な HTML や JavaScript を返す例をオンラインで見つけることができません。「TheUri」構文のように、WebForms コーデックとは独立した専用の構成 API が見つかると思います。
独自の「EmbeddedFileHandler」を作成して、静的な埋め込みファイルのコンテンツを返すこともできますが、これは非常に単純なユース ケースであるため、何かが欠けているように感じます...