Отсутствие сообщений об ошибках с плавной проверкой в 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 ответ:
Я нашел ответ. Это был Оверлук от моего имени:
Это было в документации, и я пропустил это:
Рассматриваются все параметры обработки ошибок и проверки, описанные ниже. таким же образом - сериализовано в свойство ResponseStatus вашего Ответ DTO делает возможным для ваших клиентских приложений: в общем случае относитесь ко всем ошибкам веб-служб одинаково.
Таким образом, все, чего не хватало в моем коде, - это добавить следующую строку в класс
HelloResponse
.Public ResponseStatus ResponseStatus { get; set;}