Мне удалось получить простой пример OpenRasta, обслуживающий тривиальное представление в XML / JSON и размещенный в OpenBastard.Envrionments.HttpListenerHostWithConfiguration, работающий в Mono (2.6.3) с небольшим набором изменений в его (OpenRasta; в частности, ветка 2.0.3000), исходный код.
Я сделал мой патч доступным здесь для всех, кто заинтересован. Изменения должны быть достаточно понятными (я включил комментарии), но я также опишу причины изменений ниже ...
OpenRasta.Diagnostics.DebuggerLoggingTraceListener предполагает, что ему будет передана ссылка на экземпляр System.Diagnostics.TraceEventCache при вызове System.Diagnostics.TraceSource. Это предположение верно для платформы .NET, но реализация TraceSource в Mono всегда передает нулевую ссылку.
Mono создает исключение NotImplementedException для методов get и set свойства System.Runtime.Remoting.Messaging.CallContext.HostContext, указанного в OpenRasta.Hosting.AmbientContext и OpenRasta.Hosting.ContextScope.
Последующие запросы от клиента могут завершиться ошибкой, если объект System.Net.HttpListenerResponse или его основной поток, соответствующий предыдущему запросу, не был явно закрыт. Этот момент мне менее понятен, в документации MSDN говорится, что объект ответа должен быть закрыт, но проблема, с которой я столкнулся, не возникала при запуске в .NET Framework.
В настоящее время я работаю над хобби-проектом, предусматривающим разработку и создание веб-службы RESTful на Mono, я буду обновлять патч по мере необходимости; надеюсь, кто-то найдет это полезным.
Отказ от ответственности: я очень новичок в OpenRasta и относительно новичок в C # / "серьезной" разработке программного обеспечения в целом. Я не тестировал никаких других компонентов OpenRasta, кроме упомянутых выше, и модульные тесты продолжают сильно проваливаться; ваш пробег будет, вероятно, варьироваться.