Отсутствие сообщений об ошибках с плавной проверкой в ServiceStack


Я только начинаю знакомиться с ServiceStack и наткнулся на FluentValidation. Я следил за введениями и создал небольшое приложение Hello.

Моя проблема заключается в том, что когда я пытаюсь проверить запрос DTO , никакие сообщения об ошибках не возвращаются, чтобы описать, как он не прошел проверку, только пустой объект Json {}.

Лично я думаю, что проверка автоматически подключается к DTO, поэтому мне не нужно писать какой-либо дополнительный код.

В ответ, вероятно, очевиден, но я не вижу его. Любая помощь будет очень признательна. Мой код ниже:

namespace SampleHello2
{
    [Route("/hello")]
    [Route("/hello/{Name}")]
    public class Hello
    {
        public string Name { get; set; }
    }

    public class HelloResponse
    {
        public string Result { get; set; }
    }


    public class HelloService : Service
    {
        public object Any(Hello request)
        {
            return new HelloResponse { Result = "Hello, " + request.Name };
        }
    }

    public class HelloValidator : AbstractValidator<Hello>
    {
        public HelloValidator()
        {
            //Validation rules for all requests
            RuleFor(r => r.Name).NotNull().NotEmpty().Equal("Ian").WithErrorCode("ShouldNotBeEmpty");
            RuleFor(r => r.Name.Length).GreaterThan(2);
        }
    }

    public class Global : System.Web.HttpApplication
    {
        public class HelloAppHost : AppHostBase
        {
            //Tell Service Stack the name of your application and where to find your web services
            public HelloAppHost() : base("Hello Web Services", typeof(HelloService).Assembly) { }

            public override void Configure(Funq.Container container)
            {
                //Enable the validation feature
                Plugins.Add(new ValidationFeature());
                container.RegisterValidators(typeof(HelloValidator).Assembly);
                //register any dependencies your services use, e.g:
                //  container.Register<ICacheClient>(new MemoryCacheClient());
            }
        }

        //Initialize your application singleton
        protected void Application_Start(object sender, EventArgs e)
        {
            new HelloAppHost().Init();
        }
    }
}

P. S. действительно наслаждались используя ServiceStack, это действительно фантастический проект, так что спасибо.

Edit

Так, например:

Вызов: http://localhost:60063/hello/Ian?format=json возвращает {"Result":"Hello, Ian"}. В то время как вызов: http://localhost:60063/hello/I?format=json возвращает {}.

Второй вызов возвращает {}, где я ожидал автоматически генерируемые сообщения об ошибках.

1 2

1 ответ:

Я нашел ответ. Это был Оверлук от моего имени:

Это было в документации, и я пропустил это:

Рассматриваются все параметры обработки ошибок и проверки, описанные ниже. таким же образом - сериализовано в свойство ResponseStatus вашего Ответ DTO делает возможным для ваших клиентских приложений: в общем случае относитесь ко всем ошибкам веб-служб одинаково.

Таким образом, все, чего не хватало в моем коде, - это добавить следующую строку в класс HelloResponse.

Public ResponseStatus ResponseStatus { get; set;}