5

虽然 Mono 支持对我们来说没什么大不了的,但我认为 OpenRasta 支持它,因为它有一些关于它的提交消息。

好吧,我尝试在 Mono 上构建它并获得了不明确的类型引用(在手动创建了 10 个obj目录之后。)所以我尝试只使用我手头的预构建程序集,这给了我一个Object Reference Not Set To Instance of an Object(我在 mono 中遇到的常见错误.. ) 在OpenRasta.Diagnostics.DebuggerLoggingTraceListener.WriteAll(使用 xsp2)

是否有对 Mono 的官方支持,或者我错过了一些额外的部署步骤?

4

3 回答 3

6

我设法获得了一个简单的 OpenRasta 示例,以 XML/JSON 提供一个简单的表示,并通过 OpenBastard.Envrionments.HttpListenerHostWithConfiguration 托管,在 Mono(2.6.3)上运行,对其(OpenRasta 的;特别是 2.0 .3000 分支)源代码。

我已经在这里为任何感兴趣的人提供了我的补丁。这些更改应该是相当不言自明的(我已包含评论),但我还将概述以下修改的原因......

  1. OpenRasta.Diagnostics.DebuggerLoggingTraceListener 假定在由 System.Diagnostics.TraceSource 调用时将传递对 System.Diagnostics.TraceEventCache 实例的引用。这个假设适用于 .NET 框架,但 Mono 的 TraceSource 实现总是传递一个空引用。

  2. Mono 为 OpenRasta.Hosting.AmbientContext 和 OpenRasta.Hosting.ContextScope 中引用的 System.Runtime.Remoting.Messaging.CallContext.HostContext 属性的 get 和 set 方法引发 NotImplementedException。

  3. 当与先前请求对应的 System.Net.HttpListenerResponse 对象或其基础流尚未显式关闭时,来自客户端的后续请求可能会失败。这一点我不太清楚,MSDN 文档指出必须关闭响应对象,但我遇到的问题在 .NET 框架上运行时并没有出现。

我目前正在从事一个爱好项目,该项目需要在 Mono 上设计和构建 RESTful Web 服务,我将在需要时更新补丁;希望有人会发现它有用。

免责声明:我对 OpenRasta 很陌生,对 C#/“严肃”软件开发也相对较新。除了上述之外,我还没有测试过 OpenRasta 的任何其他组件,并且单元测试继续失败;您的里程可能会有所不同。

于 2010-04-18T17:25:52.067 回答
5

OpenRasta 目前没有在单声道上进行测试。这会随着下一次迭代而改变,但答案是“我不知道”。

DebuggerLoggingTraceListener 正在写入调试器输出,mono 可能对代码的工作方式有不同的期望。

于 2010-03-26T13:40:36.563 回答
2

如果您想要一个也可以在 MONO 上运行的 Web 服务框架,您应该查看http://www.servicestack.net

它还可以托管在控制台应用程序(独立于 Web 服务器)或任何 ASP.NET 应用程序中,包括:

  • IIS 6.0/7.0
  • Apache + Mod_Mono XSP
  • 启用 FastCGI 的 Web 服务器,如 Nginx、Cherokee 等
于 2010-11-19T11:05:52.207 回答