یک نکتهی تکمیلی: ساده شدن نحوهی پردازش پیامهای خالی رسیده در دات نت 7
تا پیش از دات نت 7، اگر درخواستی با یک بدنهی خالی، یعنی با مشخصات Content-Length == 0 به سمت یک اکشن متد که آنرا از طریق [FromBody] دریافت میکند، ارسال شود، با پیام خطای «A non-empty request body is required» خاتمه خواهد یافت. یک روش رفع سراسری آن، تنظیم زیر است:
و روش دیگر آن فقط برای یک اکشن متد خاص، به صورت زیر:
در دات نت 7 این وضعیت ساده شده و بر اساس نال پذیری پارامتر دریافتی، در این مورد تصمیم گیری میشود:
یعنی اگر پارامتری نالپذیر بود، قابلیت پردازش یک بدنهی درخواست خالی را به صورت نال دارد و برعکس.
تا پیش از دات نت 7، اگر درخواستی با یک بدنهی خالی، یعنی با مشخصات Content-Length == 0 به سمت یک اکشن متد که آنرا از طریق [FromBody] دریافت میکند، ارسال شود، با پیام خطای «A non-empty request body is required» خاتمه خواهد یافت. یک روش رفع سراسری آن، تنظیم زیر است:
var builder = WebApplication.CreateBuilder(args); builder.Services.Configure<MvcOptions>(options => { options.AllowEmptyInputInBodyModelBinding = true; });
public IActionResult Post([FromBody(EmptyBodyBehavior = EmptyBodyBehavior.Allow)] MyBody? body) { // body will be null if the request Content-Length == 0 }
public class ExampleController : Controller { public IActionResult Post(MyBody? body) // Nullable { // body will be null if the request Content-Length == 0 } public IActionResult Post(MyBody body) // Non-nullable { // Request will fail with a 400 and "A non-empty request body is required." // when Content-Length == 0 } }