虽然Mono支持对我们来说不是什么大不了的事,但我认为OpenRasta支持它,因为它有一些关于它的提交消息.
好吧,我尝试在Mono上构建它并获得了Ambiguous类型引用(在手动创建10个obj
目录之后.)所以我尝试使用我手头上的预构建程序集,这给了我一个Object Reference Not Set To Instance of an Object
(我用单声道的常见错误.. )at OpenRasta.Diagnostics.DebuggerLoggingTraceListener.WriteAll
(使用xsp2)
是否有官方支持Mono或我错过了一些额外的部署步骤?
我已经设法得到一个简单的OpenRasta示例,在XML/JSON中提供一个简单的表示,并通过OpenBastard.Envrionments.HttpListenerHostWithConfiguration托管,在Mono(2.6.3)上运行,对其进行一小组更改(OpenRasta的;特别是2.0) .3000分支)源代码.
我已经在这里为我感兴趣的人提供了我的补丁.这些变化应该是相当自我解释的(我已经包含了评论),但我还将概述下面修改的原因......
OpenRasta.Diagnostics.DebuggerLoggingTraceListener假定在System.Diagnostics.TraceSource调用时将传递对System.Diagnostics.TraceEventCache实例的引用.这个假设适用于.NET框架,但Mono的TraceSource实现总是传递一个空引用.
Mono为OpenRasta.Hosting.AmbientContext和OpenRasta.Hosting.ContextScope中引用的System.Runtime.Remoting.Messaging.CallContext.HostContext属性的get和set方法抛出NotImplementedException.
当未明确关闭与先前请求相对应的System.Net.HttpListenerResponse对象或其基础流时,来自客户端的后续请求可能会失败.这一点我不太清楚,MSDN文档声明必须关闭响应对象,但我遇到的问题在.NET框架上运行时不会出现.
我目前正在开发一个业余爱好项目,需要在Mono上设计和构建RESTful Web服务,我会在需要时更新补丁; 希望有人会觉得它很有用.
免责声明:我对OpenRasta非常陌生,而且对于C#/"严肃"的软件开发来说相对较新.我没有测试过上面提到的OpenRasta的任何其他组件,单元测试仍然很难.你的里程可能会有所不同.
OpenRasta目前尚未在单声道上进行测试.这种情况随着下一次迭代而改变,但答案是"我不知道".
DebuggerLoggingTraceListener正在写入调试器输出,mono可能对代码的工作方式有不同的期望.