0
내 SavesController (Web API 컨트롤러)에 Save 메서드가 있습니다. 내가 우편 배달부와 그것을 시험했을 때, 그것을 돌려 줬다.우편 발송자가 "비 정적 방법에는 대상이 필요합니다."가 반환되는 이유는 무엇입니까?
{
"message": "An error has occurred.",
"exceptionMessage": "Non-static method requires a target.",
"exceptionType": "System.Reflection.TargetException",
"stackTrace": " at System.Web.Http.ApiController. <InvokeActionWithExceptionFilters>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.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext()"
}
내 저장 방법은 여기입니다. internet.I는 LINQ에서 null 값을 사용에서 오는 문제를 발견을 통해 예외는 내가 검색 한
[HttpPost]
public IHttpActionResult Save(SavesDto dto)
{
var userId = User.Identity.GetUserId();
if (_context.SavedPosts.Any(a => a.AttendeeId == userId && a.PostId == dto.PostId))
return BadRequest("The save already exists.");
var savedPost = new Saves
{
PostId = dto.PostId,
AttendeeId = userId
};
_context.SavedPosts.Add(savedPost);
_context.SaveChanges();
return Ok();
}
if 문에서 던져졌다. 그러나 Linq 문에서 모든 메서드는 true/false를 반환합니다. 왜이 예외가 발생합니까?
public class SavesDto
{
public int PostId { get; set; }
}
나는 PostId 및 AttendeeId 당신이 null 인 람다 표현식에서 변수를 사용하는 경우이 예외가 발생
public class Saves
{
public ApplicationUser User { get; set; }
public Post Post { get; set; }
[Key]
[Column(Order = 1)]
public int PostId { get; set; }
[Key]
[Column(Order = 2)]
public string AttendeeId { get; set; }
}
예 dto 객체가 null입니다. 이제 다음 줄에서 Null 참조 예외가 발생합니다. 왜 내가 왜 스크립트 개체에 postId를 전달하고 있기 때문에 dto 객체가 null인지 알 수 있습니다. – savvy
컨트롤러의 메소드가 dto 객체의 인스턴스를 생성하지 않고 PostId 값으로 채 웁니다. 당신이 받아 들인다면 : int PostID, dto 객체 대신에 동작 할 것이라고 기대합니다. – Rono