在 ASP.NET Core 3.1 服务器端,处理 Ajax post 请求可能会遇到问题,表现为返回 HTTP 400 错误。这个问题的原因是默认情况下,ASP.NET Core 3.1 不会自动反序列化 JSON 请求主体。
解决方法是手动添加支持 JSON 反序列化的代码。以下示例代码演示了如何在服务器端将 Ajax post 请求的 JSON 主体反序列化为 C# 对象。
首先,在 ASP.NET Core 3.1 控制器中定义一个接收 POST 请求的方法:
[HttpPost]
public IActionResult MyAction([FromBody] MyModel model)
{
// 处理请求并返回结果
}
接下来,创建一个 Startup.cs 文件,添加以下代码以启用 JSON 反序列化:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
options.JsonSerializerOptions.DictionaryKeyPolicy = null;
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
启用 JSON 反序列化后,服务器端应该能够成功处理 Ajax post 请求并解析 JSON 主体了。