簡體   English   中英

ASP.NET WEB API 2 - 每個請求觸發兩次模型綁定

[英]ASP.NET WEB API 2 - ModelBinding Firing twice per request

我有一個自定義驗證屬性,當我通過 POST 向服務器發出請求時,會在該屬性上觸發兩次 IsValid 方法。

它導致錯誤消息返回重復。

我已經使用 Fiddler 檢查過請求只被觸發一次,所以情況是 1 個請求,模型綁定觸發兩次。

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class MinimumAgeAttribute : ValidationAttribute
{
    private readonly int _minimumAge;

    public MinimumAgeAttribute(int minimumAge)
    {
        _minimumAge = minimumAge;
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        DateTime date;

        if (DateTime.TryParse(value.ToString(), out date))
        {
            if (date.AddYears(_minimumAge) < DateTime.Now)
            {
                return ValidationResult.Success;
            }
        }

        return new ValidationResult("Invalid Age, Clients must be 18 years or over");
    }
}

問題出在 Ninject 上,它使 ModelValidatorProvider 的數量翻了一番。

我已經添加了這個綁定來防止這個問題。

container.Rebind<ModelValidatorProvider>().To<NinjectDefaultModelValidatorProvider>();

問題確實是由 Ninject 引起的。 有兩個模型驗證器提供程序注冊驗證屬性ModelValidatorProviderNinjectDefaultModelValidatorProvider 在我的情況下,我只在 Ninject 配置文件中ModelValidatorProvider ,在創建新內核的情況下:

var kernel = new StandardKernel();
kernel.Unbind<ModelValidatorProvider>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM