Ошибка отражения ServiceStack.Text в Mono 3.4.0

Я использую ServiceStack API (4.0.22) на Mono 3.4.0 и использую асинхронные веб-сервисы в автономном приложении, и получаю следующую ошибку:

{
    ResponseStatus: {
        ErrorCode: "ArgumentNullException",
        Message: "Argument cannot be null. Parameter name: methodInfo",
        StackTrace: " at System.Reflection.Emit.ILGenerator.EmitCall (OpCode opcode, System.Reflection.MethodInfo methodInfo, System.Type[] optionalParameterTypes) [0x0000c] in /Volumes/build-root-ramdisk/mono-3.4.0/mcs/class/corlib/System.Reflection.Emit/ILGenerator.cs:822 at ServiceStack.Text.FastMember.TypeAccessor.WriteSetter (System.Reflection.Emit.ILGenerator il, System.Type type, System.Reflection.PropertyInfo[] props, System.Reflection.FieldInfo[] fields, Boolean isStatic) [0x00000] in <filename unknown>:0 at ServiceStack.Text.FastMember.TypeAccessor.CreateNew (System.Type type) [0x00000] in <filename unknown>:0 at ServiceStack.Text.FastMember.TypeAccessor.Create (System.Type type) [0x00000] in <filename unknown>:0 at ServiceStack.TaskExt.GetResult (System.Threading.Tasks.Task task) [0x00000] in <filename unknown>:0 at ServiceStack.Host.Handlers.ServiceStackHandlerBase+<>c__DisplayClass6.<HandleResponse>b__4 (System.Threading.Tasks.Task task) [0x00000] in <filename unknown>:0 at ServiceStack.AsyncExtensions.Continue[Task] (System.Threading.Tasks.Task task, System.Func`2 next) [0x00000] in <filename unknown>:0 "
    }
}

Служба возврата:

    public async Task<FindSleepResponse> Get(FindSleep request)
    {

        var dbSleep = await _sleepRepository.GetByUser(1);

        var sleep = new List<Tribe.Guru.ServiceModel.Types.Sleep> ();
        foreach (var item in dbSleep)
        {
            var pocoSleep = item.ConvertTo<Tribe.Guru.ServiceModel.Types.Sleep> ();
            sleep.Add (pocoSleep);
        }

        var response = new FindSleepResponse { Sleeps = sleep };

        return response;
    }

Классы Poco:

    [Route("/sleep", "GET")]
    [DataContract]
    public class FindSleep : IReturn<FindSleepResponse>
    {

    }

    [DataContract]
    public class FindSleepResponse
    {
        [DataMember(Name="sleeps")]
        public List<Sleep> Sleeps { get; set; }
    }

    [DataContract]
    public class Sleep
    {
         [DataMember(Name="id")]
         public int Id { get; set; }

         [DataMember(Name="date")]
         public DateTime ActualDateTime { get; set; }

         [DataMember(Name="hours")]
         public double HoursSleep { get; set; }

         [DataMember(Name="quality")]
         public int SleepQuality { get; set; }

         [DataMember(Name="feeling")]
         public int OverallFeeling { get; set; }

         [DataMember(Name="comment")]
         public string Comment { get ;set; }

     }

Selfhost:

/// <summary>
/// The application host for service stack
/// </summary>
public class AppHost : AppHostHttpListenerBase
{
    /// <summary>
    /// Initializes a new instance of the <see cref="Tribe.Guru.Web.AppHost"/> class.
    /// </summary>
    public AppHost() : base("Tribe Guru Web Services", typeof(SleepService).Assembly) { }

    public override void Configure(Funq.Container container)
    {
        SetConfig(new HostConfig { HandlerFactoryPath = "api" });

        //Setup the container injection
        InitialiseStack.Setup (container);

    }
}

Я развернул это на appharbour в качестве приложения MVC и без проблем работает на IIS, поэтому кажется, что это проблема Mono или ServiceStack для Mono. Любые идеи, которые я не могу для моей жизни решить, в чем проблема?

1 ответ

Решение

Должен быть решен в этом коммите, который будет доступен в следующем v4.0.23+ выпуске ServiceStack, который теперь доступен на MyGet.

Другие вопросы по тегам