簡體   English   中英

Asp.Net Core 2.1 ApiController 屬性不驗證模型

[英]Asp.Net Core 2.1 ApiController attribute doesn't validate Model

我正在使用 .NET Core 2.1。

這是我的控制器:

namespace MyApp.Controllers
{
   /// <summary>
   /// Cost controller
   /// </summary>
   [Route("api/v1/[controller]")]
   [Produces("application/json")]
   [ApiController]
   public class CostController : ControllerBase
   {

其中一條路線:

        /// <summary>
        /// Estimate cost
        /// </summary>
        /// <param name="info">Processing information</param>
        [HttpPost("estimate")]
        public IActionResult Estimate(ProcessingInfo info)

ProcessingInfo定義如下:

public class ProcessingInfo
{
    [Range(0.0000001, double.MaxValue)]
    [JsonProperty(PropertyName = "inputSizeGB", Required = Required.Always)]
    public double InputSizeGB { get; set; }
}

Startup.cs ,我有以下幾行:

services.AddMvc()
    .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver())
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

我也試過沒有SetCompatibilityVersion

如果我發送無效模型,無論是使用 TestServer 還是使用 Postman 進行集成測試:

{
  "inputSizeGB": -1
}

我得到 200-OK 響應,而不是預期的 BadRequest 400: 郵差

請注意,如果我手動添加檢查if (!ModelState.IsValid)模型被聲明為無效。

所有這些都來自現有的代碼庫,所以我正在瘋狂地尋找可能導致這種副作用的原因,但到目前為止我一直很不走運。

於是我發現了這個問題,一些設置services.Configure<ApiBehaviorOptions>(options => options.SuppressModelStateInvalidFilter = true); 在服務配置中。

暫無
暫無

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

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