虽然Mono支持对我们来说不是什么大问题,但我认为OpenRasta支持它,因为它有一些关于它的提交消息..
好吧,我尝试在Mono上构建它并获得了不明确的类型引用(在手动创建10 obj
目录之后。)所以我尝试使用我手头上的预构建程序集,这给了我一个{{在Object Reference Not Set To Instance of an Object
(使用xsp2)
Mono是否有正式支持,或者我错过了一些额外的部署步骤?
答案 0 :(得分:6)
我设法得到一个简单的OpenRasta示例,在XML / JSON中提供简单的表示,并通过OpenBastard.Envrionments.HttpListenerHostWithConfiguration托管,在Mono(2.6.3)上运行,对其进行一小组更改(OpenRasta;特别是2.0.3000分支)源代码。
我为感兴趣的人做了patch available here。这些变化应该是相当自我解释的(我已经包含了评论),但我还将概述下面修改的原因......
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。
< / LI>当未明确关闭与先前请求相对应的System.Net.HttpListenerResponse对象或其基础流时,来自客户端的后续请求可能会失败。这一点我不太清楚,MSDN文档声明必须关闭响应对象,但我遇到的问题在.NET框架上运行时不会出现。
我目前正在开发一个业余爱好项目,需要在Mono上设计和构建RESTful Web服务,我会在需要时更新补丁;希望有人会发现它很有用。
免责声明:我对OpenRasta非常陌生,而且对于C#/“严肃”的软件开发来说相对较新。我没有测试过上面提到的OpenRasta的任何其他组件,单元测试仍然很难。你的里程可能会有所不同。
答案 1 :(得分:5)
OpenRasta目前尚未在单声道上进行测试。这种情况随着下一次迭代而改变,但答案是“我不知道”。
DebuggerLoggingTraceListener正在写入调试器输出,mono可能对代码的工作方式有不同的期望。
答案 2 :(得分:2)
如果您想要一个也在MONO上运行的Web服务框架,您应该查看http://www.servicestack.net
它也可以托管在控制台应用程序(独立于Web服务器)或任何ASP.NET应用程序中,包括: