我正在为我的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) 有没有办法为插件中属于同一服务的所有路由添加前缀?
我有几个服务.它们中的每一个都保持在一个单独的类中(例如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)
我可以以某种方式实现它吗?谢谢
我必须调用存储过程,但传递一个数据表(一个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
我怎样才能做到这一点?
您好我刚刚在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,披萨!