私は、Webサイト上の「ウィジェット」用のプラグインアーキテクチャに取り組んでいます。私は個々のウィジェットにJavascriptとCSSをリソースとしてアセンブリに格納したいと思います。ページがレンダリングされるときに、WCFサービスを参照するスクリプトタグを挿入して、ウィジェットを検査し、目的のファイルを抽出してブラウザに送り返すことができます。WCFサービスからCSSファイルをどのように配信できますか?
これはJavascriptファイルでは問題なく動作しますが、ブラウザはCSSファイルをオクテットストリームとして処理できません。通常、HttpContextで応答のコンテンツタイプを変更することはできますが、これはWCFサービスでは利用できません。
<link type="text/css" rel="stylesheet" href="/Controllers/WidgetFileService.svc/style/WidgetId">
私は、私の経験では、それらはに困難になる可能性があるため、カスタムIHTTPハンドラを実装しないことを好むだろう:私は必要なもの
は、ブラウザがそのようなURLを介してこれらのファイルを取得することですデプロイ、デバッグ、および異なるマシンでの作業を行うことができます。これはこの会社の私の最初のプロジェクトであり、展開とテストを複雑にすることはありません。ここで
は、私がインターフェイスのために持っているものです。
[ServiceContract]
public interface IWidgetFileService
{
[OperationContract]
[WebGet(UriTemplate = "style/{widgetID}", BodyStyle = WebMessageBodyStyle.Bare)]
System.IO.Stream GetStyleFile(String widgetID);
}
と実装:私はURLを参照した場合、予想通り
static private System.IO.Stream StreamBytes(byte[] data)
{
System.IO.Stream s = new System.IO.MemoryStream(data);
s.Position = 0;
return s;
}
public System.IO.Stream GetStyleFile(String widgetID)
{
IWidget w = GetWidget(widgetID);
return StreamBytes(w.GetEditorStyleFile());
}
、データが戻ってきます。これは、ブラウザが問題の原因となっているリクエストを処理する方法のようです。
私はCSSをスタイルブロックのページに直接レンダリングすることができますが、それは理想的ではありません。 –