小编Piz*_*boy的帖子

首次失败时停止流利验证

我正在为我的Request对象定义一个验证.我希望验证器在第一次失败时停止,而不仅仅是同一链上的验证器.在下面的示例中,如果我的TechnicalHeader对象为null,则在验证达到规则时,我会收到NullReference异常TechnicalHeader.MCUserid.

可怜的话,根据第一条规则的结果,我想对下面代码中的最后三条规则进行条件验证

using System;
using ServiceStack.FluentValidation;
using MyProj.Services.Models;

namespace MyProj.Services.BaseService.Validators
{
    public class BaseValidator<T> : AbstractValidator<T>
        where T : RequestBase
    {
        public BaseValidator()
        {
            RuleSet(ServiceStack.ApplyTo.Put | ServiceStack.ApplyTo.Post, 
                () =>
                {
                    this.CascadeMode = CascadeMode.StopOnFirstFailure;
                    RuleFor(x => x.TechnicalHeader).Cascade(CascadeMode.StopOnFirstFailure).NotNull().WithMessage("Header cannot be null");
                    RuleFor(x => x.TechnicalHeader).NotEmpty().WithMessage("Header cannot be null");
                    RuleFor(x => x.TechnicalHeader.Userid).NotEmpty().WithMessage("Userid cannot be null or an empty string");
                    RuleFor(x => x.TechnicalHeader.CabCode).GreaterThan(0).WithMessage("CabCode cannot be or less than 0");
                    RuleFor(x => x.TechnicalHeader.Ndg).NotEmpty().WithMessage("Ndg cannot be null or an empty string");
                }
            ); …
Run Code Online (Sandbox Code Playgroud)

validation fluentvalidation servicestack

16
推荐指数
3
解决办法
7801
查看次数

在插件中注册服务前缀 - ServiceStack

有没有办法为插件中属于同一服务的所有路由添加前缀?

我有几个服务.它们中的每一个都保持在一个单独的类中(例如UserService.cs ..).服务按类别分组,每个类别由项目表示.

所以,首先:通过指定"[Route("/ somewhere"]"而不是在AppHost中注册每个服务,然后在*Service.cs中注册,我可以在插件中只注册一次服务吗?

但这里提出了一个真正的问题:即使第一个问题的答案是"否",我可以在插件中指定一个属于它的每个服务都会继承的路由前缀吗?这条路:

我希望服务在/ admin/user,我想这样做:

插件方面:

    appHost.RegisterService<UserService>("/admin");
Run Code Online (Sandbox Code Playgroud)

在我想要使用的服务方面:

    [Route("/user")]
    public class UserService: Service
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式实现它吗?谢谢

c# servicestack

4
推荐指数
1
解决办法
321
查看次数

使用ServiceStack ORMLite将DataTable传递给SP

我必须调用存储过程,但传递一个数据表(一个iEnumerable)作为参数.

SQL服务器上的我的SP将此参数视为:

@LIST_USERS dbo.LIST_USERINFO_TYPE READONLY
Run Code Online (Sandbox Code Playgroud)

并且类型定义为:

CREATE TYPE [dbo].[LIST_USERINFO_TYPE] AS TABLE(
   [ID_USER] [int] NOT NULL,
   [ID_DATA] [int] NOT NULL,
   [HEADER_TXT] [varchar](100) NULL)
Run Code Online (Sandbox Code Playgroud)

然后,在调用者方面,我以这种方式创建参数:

list.Add(new UserInfoItem { IdUser = 401, IdData = 3, HeaderTxt = "" });
list.Add(new UserInfoItem { IdUser= 402, IdData= 2, HeaderTxt= "gotcha" });
list.Add(new UserInfoItem { IdUser= 403, IdData= 1, HeaderTxt= "pacific rim" });

dbConn.StoredProcedure(sp,
  new
    {
      LISTA_QUESTIONARIO = DomandeRisposteList
    });
Run Code Online (Sandbox Code Playgroud)

当我启动项目实际上它停止KeyNotFoundException尝试

name.DbType = OrmLiteConfig.DialectProvider.GetColumnDbType(propertyInfo.PropertyType);
Run Code Online (Sandbox Code Playgroud)

ServiceStackExtension.cs

我怎样才能做到这一点?

c# servicestack ormlite-servicestack

4
推荐指数
1
解决办法
998
查看次数

找不到ServiceStack RequestContext

您好我刚刚在VS中创建了一个新的Empty webApp并安装了servicestack Nugets.

我一直在寻找缓存响应内存(通过MemCached),但在服务Any方法中我无法访问该base.RequestContext对象.

类DO继承自ServiceStack.Service(ServiceStack.ServiceInterface.Service之前不是吗?).

    public class UtentiService : Service
{

    public object Get(I_Utenti request) 
    {
        var cacheKey = "myKey";

        return  base.RequestContext.ToOptimizedResultUsingCache(base.Cache, cacheKey, () =>{});
    }
}
Run Code Online (Sandbox Code Playgroud)

但我无法访问base.RequestContext.为什么?

HSH,披萨!

c# memcached servicestack

1
推荐指数
1
解决办法
1325
查看次数