Я пытаюсь отправить некоторые данные через мой API веб-службы ASP.NET, но он выдает исключение DbEntityValidationException, когда я пытаюсь опубликовать строку JSON.Где я ошибаюсь при попытке опубликовать мою строку JSON?
Я использовал этот блок кода, чтобы помочь мне отладить мою проблему, но он говорит мне, что мои поля обязательны, когда они существуют встрока JSON, почти обрабатывая строку так, как будто она никогда не существует.Он дает мне знать, если тело запроса имеет нулевое значение, но независимо от пар имя-значение, он все равно говорит мне, что поля обязательны для заполнения.
Строка JSON, которую я пытаюсь опубликовать, в значительной степени отрывается отстраница справки
{
"CUSTOMER_ID": 7.0,
"CUSTOMER_USERNAME": "sample string 2",
"CUSTOMER_PASSWORD": "sample string 3",
"CUSTOMER_NAME": "sample string 4",
"CUSTOMER_EMAIL": "sample string 5"
}
, и я получаю ответ
Response: 500
"Message": "An error has occurred.",
"ExceptionMessage": "Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. The validation errors are: CUSTOMER.CUSTOMER_USERNAME: The CUSTOMER_USERNAME field is required.; CUSTOMER.CUSTOMER_PASSWORD: The CUSTOMER_PASSWORD field is required.; CUSTOMER.CUSTOMER_NAME: The CUSTOMER_NAME field is required.; CUSTOMER.CUSTOMER_EMAIL: The CUSTOMER_EMAIL field is required.",
"ExceptionType": "System.Data.Entity.Validation.DbEntityValidationException"
"StackTrace": " at WebAPI.Models.Entities3.SaveChangesAsync() in C:\\Users\\[username]\\Desktop\\[folder]\\WebAPI\\WebAPI\\WebAPI\\Models\\Model1.Context.cs:line 65\r\n at WebAPI.Controllers.CUSTOMERsController.<PostCUSTOMER>d__4.MoveNext() in C:\\Users\\[user]\\Desktop\\[folder]\\WebAPI\\WebAPI\\WebAPI\\Controllers\\CUSTOMERsController.cs:line 88\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()"
API использует следующий метод через контроллер и модель для отправки строки.
// POST: api/CUSTOMERs
[ResponseType(typeof(CUSTOMER))]
public async Task<IHttpActionResult> PostCUSTOMER(CUSTOMER cUSTOMER)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.CUSTOMERs.Add(cUSTOMER);
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateException)
{
if (CUSTOMERExists(cUSTOMER.CUSTOMER_ID))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtRoute("DefaultApi", new { id = cUSTOMER.CUSTOMER_ID }, cUSTOMER);
}
=============================================================================
namespace WebAPI.Models
{
using System;
using System.Collections.Generic;
public partial class CUSTOMER
{
public decimal CUSTOMER_ID { get; set; }
public string CUSTOMER_USERNAME { get; set; }
public string CUSTOMER_PASSWORD { get; set; }
public string CUSTOMER_NAME { get; set; }
public string CUSTOMER_EMAIL { get; set; }
}
}
С заголовками все в порядке, так как я использую apirequest.io , чтобы помочь мне отладить, но я не совсем уверен, что происходит не так.