1

私は 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」を作成して、静的な埋め込みファイルのコンテンツを返すこともできますが、これは非常に単純なユース ケースであるため、何かが欠けているように感じます...

4

1 に答える 1

2

初期化される asp.net パイプラインに依存するもの (aspx webforms ページなど) はコンパイルできません。これは主に、webforms が asp.net パイプラインに緊密に結合されているためです。

OR 2 は、静的コンテンツを提供するために asp.net の外部で完全な Web スタックとして使用するようには実際には設計されていません。通常、ホスト環境はそれを行うのにより適しているためですが、それは間違いなく 3.0.

私が提案したいのは、FileInfo をリソースとして登録し、必要なファイルのファイル システムをスキャンできるハンドラーを作成し、データ自体をストリーミングするか、ホストの API を呼び出す独自のコーデックを提供するという行に沿ったものです。 http リスナー。これは約 20 行のコードで、素晴らしいブログ投稿になるはずです。:)

于 2011-06-21T20:35:03.557 に答える