2011-06-21 10 views
1

私はOpenRasta 2.0を使用しており、コンソールアプリケーション内でホスティングしています。OpenRastaで静的HTMLおよび/またはJavascriptを返す方法

私は、たとえば、この設定からいくつかの静的なHTMLページとJavaScriptファイルを返すことができるようにしたいと思い

: /index.htmlが /jquery.js

ファイルが完全に静的で

を、すなわち無ハンドラまたはリソースが必要です。

私はプロジェクトに適切なファイルを追加し、最初に次の構文を試してみました:

ResourceSpace.Has 
.ResourcesOfType<object>() 
.AtUri("/") 
.HandledBy<HtmlHandler>() 
.RenderedByAspx("~/Views/IndexView.aspx"); 

た.aspxファイルはフォルダの「ビュー」の下にプロジェクトに追加され、ビルドアクションを設定されています'埋め込みリソース'に変換します。この結果、実行時に仮想パスを解決しようとするとNullReferenceExceptionが発生します。私がファイルのビルドアクションを「コンパイル」に設定すると、コンパイルされません。コンソールプロジェクトがASPXを理解できないため、私は推測しています。

Webフォームコーデックを参照する場合、私はまた、この利用できるため、次の省略形の構文を試してみました:

ResourceSpace.Has 
.TheUri("/jquery.js") 
.ForThePage("~/Views/jquery.js"); 

をしかし、ダミーハンドラの必要性を削除していますが、これは、私の最初のアプローチと同じ問題を抱えています。私が知る限り、ASPXファイルをコンパイルできないため、WebFormsコーデックはコンソールアプリケーション内で使用できません。

Razorコーデックを使用してHTMLを返すことができました。これは、ビューテンプレートが埋め込まれることを期待しているからです。しかし、私は、同じテクニックを使用して適切なメディアタイプのJavaScriptファイルを返すことができませんでした。静的ファイルを.resourceで定義された.cshtmlファイルに変換する必要がありました。

OpenRastaを使用して静的なHTMLやJavaScriptを返す例はありません。 "TheUri"構文のように、WebFormsコーデックとは独立した専用の構成APIを見つけることができます。

私は、静的な埋め込みファイルの内容を返すために私自身の「EmbeddedFileHandler」を作成することもできますが、これはこのような単純なユースケースであるので、私は何かが欠けてるような気が...依存

+0

私の問題は、Silverlight xapアーカイブを提供したいだけです。 – mark

+0

@mark私はこれにどのように取り組んだのかを記述したブログ記事を作成しました:http://liddellj.im/post/8638364010/serving-static-content-using-openrasta-2-0。それが役に立つと願っています。 –

答えて

2

何かasp.netパイプラインは、asp.netパイプラインにあまりにも強く結合しているため、asp.netパイプラインは初期化されています(aspx webformsページなど)は、BuildProviderが存在しないためコンパイルできません。

OR 2は、静的コンテンツを提供するためにasp.net以外の完全なWebスタックとして使用するよう実際には設計されていませんでした。通常はホスト環境が適していますが、これは明らかに対応するものです3.0で

FileInfoをリソースとして登録する行には、ファイルシステムをスキャンして必要なファイルをスキャンできるハンドラーを作成し、データ自体をストリームするか、ホストhttpリスナー用のAPI。それはコードトップの約20行でなければならず、すばらしいブログ投稿を作成するだろう。 :)

+0

ありがとう@serialseb、私はそれを見てみましょう。この場合の私のリソースは単にファイルなので、完璧な意味合いがあります。私が何か有益なものを作ったら、報告します。 –

関連する問題