2011-06-21 15 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。

我也曾嘗試以下簡寫語法此可如果引用的WebForms編解碼器:

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

但是從同樣的問題我最初的方法,這受苦,但不會刪除一個虛擬處理器的需要。據我所知,WebForms編解碼器不能在控制檯應用程序中使用,因爲無法編譯ASPX文件。

我能夠使用Razor編解碼器返回HTML,因爲這需要嵌入視圖模板。但是 - 我無法使用相同的技術返回具有適當媒體類型的JavaScript文件,並且必須將我的其他靜態文件轉換爲使用@resource定義的.cshtml文件。

我無法在線找到任何使用OpenRasta返回靜態HTML和/或JavaScript的示例。我希望爲此找到一個專用的配置API,如「TheUri」語法,但獨立於WebForms編解碼器。

我可以創建自己的「EmbeddedFileHandler」返回一個靜態嵌入式文件的內容,但我覺得我失去了一些東西,因爲這是這樣一個簡單的使用案例......

+0

我的問題確切地說,只有我希望爲Silverlight xap存檔提供服務。 – mark

+0

@mark我做了一篇博客文章,描述我如何解決這個問題:http://liddellj.im/post/8638364010/serving-static-content-using-openrasta-2-0。希望它是有用的。 –

回答

2

任何依賴於被初始化的asp.net管道(比如aspx webforms頁面)無法編譯,因爲BuildProvider沒有這樣做,主要是因爲webforms與asp.net管道耦合過緊。

OR 2並沒有真正被設計成用作asp.net以外的完整web棧來提供靜態內容,因爲通常主機環境更適合做這件事,但這是我們要解決的問題在3.0。

我建議的是沿着將FileInfo註冊爲資源的方式,創建一個可以掃描文件系統以獲取所需文件的處理程序,並提供您自己的編解碼器,可以自己編寫數據或調用主機http偵聽器的API。它應該是大約20行代碼,並且會成爲一篇很棒的博客文章。 :)

+0

感謝@serialseb,我會仔細研究一下。具有完美意義,因爲在這種情況下我的資源只是文件。如果我創建了一些有用的東西,會報告回 –

相關問題