调用服务 RegisterService 删除响应的 "Success" 属性

Calling service RegisterService removes "Success" property of response

我将 Register 服务包装在我自己的服务中,如下面的代码片段所示:

    var auth = request.ConvertTo<Register>();

    var regService = base.ResolveService<RegisterService>();

    RegisterResponse response = null;

    try
    {
        response = (RegisterResponse)regService.Post(auth);
    }
    catch (Exception ex)
    {
        Log.Error($"Unable to register user {request.Email}", ex);
        return new RegisterUserResponse
        {
            Success = false,
            PublicMessage = "Unable to register user",
            DebugMessage = ex.Message
        };
    }

当出现错误时,RegisterService 修改响应并添加一个空的 ResponseStatus 对象并删除 Success 属性.

我不介意添加额外的对象,但无论如何要阻止它删除 Success 属性?

默认情况下,ServiceStack 会序列化 bool 属性,但您所描述的行为是如果您专门将其配置为不通过设置:

JsConfig.Init(new Config {
    // ExcludeDefaultValues = true,
});

在这种情况下,所有默认值,例如 bool 属性的 false 都不会在线上发出。如果您想保留此配置并希望 false 被序列化,您必须更改它,使其不是默认值,使其可以为空,例如:

public class RegisterUserResponse
{
    public bool? Success { get; set; }
}