如何在OpenRasta中返回静态HTML和/或Javascript

时间:2011-06-21 20:13:28

标签: javascript html openrasta

我正在使用OpenRasta 2.0,并且正在控制台应用程序中托管。

我希望能够从此设置中返回一些静态HTML页面和JavaScript文件,例如:    /index.html    /jquery.js

文件完全是静态的,即不需要处理程序或资源。

我已将适当的文件添加到项目中,并且最初尝试使用以下语法:

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

将.aspx文件添加到项目“Views”下的项目中,并将构建操作设置为“Embedded Resource”。在尝试解析虚拟路径时,这会在运行时导致NullReferenceException。如果我将文件的构建操作设置为'Compile',那么它将无法编译,我猜是因为控制台项目不理解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'来返回静态嵌入文件的内容,但我觉得我错过了一些东西,因为这是一个简单的用例......

1 个答案:

答案 0 :(得分:2)

依赖于初始化的asp.net管道(例如aspx webforms页面)的任何东西都无法编译,因为BuildProvider不在那里进行编译,主要是因为webforms与asp.net管道的耦合太紧。

OR 2并非真正被设计为用于提供静态内容的asp.net之外的完整Web堆栈,因为通常主机环境更适合这样做,但这绝对是我们要解决的问题。 3.0。

我建议的是将FileInfo注册为资源,创建一个可以扫描文件系统以获取所需文件的处理程序,并提供自己的编解码器来自行传输数据或调用API为主机http监听器。它应该是大约20行代码顶部,并将成为一个伟大的博客文章。 :)