[英]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 引起的。 有兩個模型驗證器提供程序注冊驗證屬性ModelValidatorProvider
和NinjectDefaultModelValidatorProvider
。 在我的情況下,我只在 Ninject 配置文件中ModelValidatorProvider
,在創建新內核的情況下:
var kernel = new StandardKernel();
kernel.Unbind<ModelValidatorProvider>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.