Хотя Моно поддержка не является грандиозным предприятием для нас, я полагал, что OpenRasta поддерживал ее причина, она имеет некоторые сообщения о фиксации об этом..
Ну, я попытался создать его на Моно и получил Неоднозначные ссылки типа (после того, как вручную создание как 10 obj
каталоги.), Таким образом, я пытался просто использовать предварительно созданные блоки, которые я имел под рукой, и это дало мне Object Reference Not Set To Instance of an Object
(обычная ошибка я имею с моно..) в OpenRasta.Diagnostics.DebuggerLoggingTraceListener.WriteAll
(использующий xsp2)
Есть ли официальная поддержка для Моно, или я пропускаю своего рода дополнительный шаг для развертывания?
OpenRasta не на данный момент тестируется на моно. Это изменится со следующей итерацией, но ответ - «я не знаю».
DebuggerLoggingTraceListener записывает в вывод отладчика, у моно могут быть разные ожидания относительно того, как работает код.
Мне удалось получить простой пример 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.
В настоящее время я работаю над хобби-проектом, который влечет за собой проектирование и создание веб-службы RESTful на Mono. Я буду обновлять патч по мере необходимости; надеюсь, кому-то это будет полезно.
Отказ от ответственности: я новичок в OpenRasta и относительно новичок в C # / «серьезной» разработке программного обеспечения в целом. Я не тестировал какие-либо другие компоненты OpenRasta, кроме упомянутых выше, и модульные тесты продолжают терпеть неудачу; ваш пробег , вероятно, будет отличаться.