首页 > 解决方案 > 使用 validationAttribute 检查 WCF Web 服务中的日期是否为 UTC

问题描述

这篇文章开始,如果我的客户向我发送了一个日期没有UTC kind.

我创建了以下自定义属性:

public class IsUtcDateTimeAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var date = value as DateTime?;
        if (date != null)
        {
            if (date.Value.Kind != DateTimeKind.Utc)
            {
                return new ValidationResult("DateTime is not UTC format");
            }
        }
        return ValidationResult.Success;
    }
}

我有以下数据合同:

[OperationContract]
SaveAgreementResponse SaveAgreement(SaveAgreementRequest request);

[MessageContract(WrapperName = "SaveAgreementRequest", WrapperNamespace = "http://fooo/agreementServices/1")]
public class SaveAgreementRequest
{
    [DataMember(Name = "TechnicalData"), MessageBodyMember(Name = "TechnicalData")]
    public SaveAgreementTechnicalData TechnicalData { get; set; }

    [DataMember(Name = "InsuranceAgreement"), MessageBodyMember(Name = "InsuranceAgreement")]
    public DC.InsuranceAgreement InsuranceAgreement { get; set; }

}

[DataContract()]
public class InsuranceAgreement {

    [DataMember()]
    [IsUtcDateTime]
    public System.Nullable<System.DateTime> creationDate { get; set; }
}

我有一个使用Effortwith a creationDateof kind的集成测试local。但不幸的是,当我调用SaveAgreement()操作时,错误不会抛出。

我可能需要在某处注册或显式调用验证方法,但没有找到任何与 WCF Web 服务上的自定义属性验证相关的文档。

标签: c#asp.net.netwcf

解决方案


推荐阅读