我正在爲網站上的「小部件」構建插件體系結構。我希望每個小部件都可以將它的Javascript和CSS作爲資源存儲在程序集中。當頁面呈現時,我注入引用WCF服務的腳本標記,可以檢查該Widget,提取所需的文件,並將其發送回瀏覽器。如何從WCF服務提供CSS文件?
這對JavaScript文件工作正常,但瀏覽器無法處理作爲八位字節流來的CSS文件。通常,您可以在HttpContext中更改響應的內容類型,但這在WCF服務中不可用。
我需要的是讓瀏覽器通過URL檢索這些文件就像這樣:
<link type="text/css" rel="stylesheet" href="/Controllers/WidgetFileService.svc/style/WidgetId">
我寧願不實現自定義的IHttpHandler,因爲,在我的經驗,這些可能很難部署,調試,並在不同的機器上工作。這是我在這家公司的第一個項目,我寧願不使部署和測試複雜化。
以下是我對接口:
[ServiceContract]
public interface IWidgetFileService
{
[OperationContract]
[WebGet(UriTemplate = "style/{widgetID}", BodyStyle = WebMessageBodyStyle.Bare)]
System.IO.Stream GetStyleFile(String widgetID);
}
和實現:
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());
}
如果我瀏覽到該URL,數據回來預期。這似乎是瀏覽器處理導致問題的請求的方式。
我想我可以直接將CSS呈現給樣式塊中的頁面,但這並不理想。 –