"Increct Content-Type:" 예외는 각도 mvc 6 응용 프로그램을 던집니다.
asp.net , mvc6, angularjs를 사용하는 어플리케이션을 개발하고 있습니다.작업 방법에 대한 요청을 하면 전달된 데이터가 없습니다.요청을 확인했을 때 다음과 같은 예외가 발생했습니다.
- 양식 '(Microsoft).AspNet.Http. 내부.DefaultHttpRequest)이것입니다.요청).Form'이(가) 'System' 유형의 예외를 던졌습니다.잘못된 작업'예외' 마이크로소프트.AspNet.Http.IformCollection {System.잘못된 작업예외}
예외 메시지 다음과"Incorrect Content-Type:application/json;charset=UTF-8"
나의 각고의 봉사
return $http({ method: 'POST', url: 'home/createEvent', eventDetails: event })
.success(function(data, status, headers, config) {
return data;
})
.catch(function(data, status, headers, config) {
console.log(data);
});
내가 조종하는
[HttpPost]
public IActionResult CreateEvent([FromBody]Event eventDetails)
{
return Json(new {dsd=""},
new JsonSerializerSettings {ContractResolver = new CamelCasePropertyNamesContractResolver()});
}
그 대답은 제게 통하지 않았습니다.저에게 해결책은 $http 호출에 헤더를 추가하는 것이었습니다.
$http({
url: "/install",
method: "POST",
data: data,
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
})
.success(...);
다음 예시가 도움이 되기를 바랍니다.
컨트롤러를 다음으로 장식해 보십시오.
[Produces("application/json")]
[Route("api/[controller]")]
컨트롤러 이름이 표시되지 않았으므로 가상의 전체 작동 예를 들어 보겠습니다.
콘트롤러
[Produces("application/json")]
[Route("api/[controller]")]
public class DashBoardLayoutApi : Controller
{
public DashBoardLayoutApi()
{ }
[HttpPost]
public void Post([FromBody] LoginViewModel data)
{ }
}
C# 뷰 모델
public class LoginViewModel
{
public string Email { get; set; }
public string Password { get; set; }
}
HTML/JS
<script>
var data = {
Email: 'Test',
Password: 'Test',
RememberMe: true
};
$("#test").click(function() {
$.ajax({
url: '/api/DashBoardLayoutApi',
type: 'POST',
dataType: "json",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
});
}
</script>
<button id="test"> Save Layout</button>
결과.
저 같은 경우에는, 추가하는 것.[Produces("application/json")]
아무것도 하지 않았지만, 추가했습니다.[FromBody]
매개변수의 속성은 트릭을 수행한 것입니다!
숨겨진 사람의 대답은 훌륭합니다.그러나 애플리케이션에 hidden의 접근 방식을 구현한 후에도 C# 컨트롤러에는 모델이 비어 있었습니다.조금 둘러본 결과 JS 코드로 작성된 잘못된 클라이언트 모델에 문제가 있어 서버에서 병렬화할 수 없습니다(null은 guid 유형으로 변환할 수 없습니다).
어떤 이유로 모델 바인더는 다음과 같은 경우에 예외를 두지 않습니다. https://learn.microsoft.com/en-us/aspnet/core/mvc/models/model-binding
매개 변수가 바인딩되면 모델 바인딩이 해당 이름의 값을 찾는 것을 중지하고 다음 매개 변수를 바인딩합니다.바인딩이 실패하면 MVC에서 오류가 발생하지 않습니다.모델 상태를 확인하여 모델 상태 오류를 조회할 수 있습니다.유효한 속성입니다.
모델 상태를 확인합니다.유효한 모델을 통과했는지 확인하기 위해 C# 컨트롤러에 유효한 속성이 있으며 모델 바인딩 오류를 잡아 기록하기 위해 사용자 지정 모델 바인더를 사용하는 것을 고려할 수 있습니다.
언급URL : https://stackoverflow.com/questions/33711629/incorrect-content-type-exception-throws-angular-mvc-6-application
'programing' 카테고리의 다른 글
UI 부트스트랩 팝업: 너비 변경 (0) | 2023.10.31 |
---|---|
조건부로 angular.js에 요소 특성을 추가합니다. (0) | 2023.10.31 |
jquery를 사용하여 통화를 올바르게 포맷하려면 어떻게 해야 합니까? (0) | 2023.10.31 |
두 개의 열을 사용하여 데이터 피벗 (0) | 2023.10.31 |
주어진 중단점에 도달할 때까지 GDB에서 실행되는 모든 행을 자동으로 인쇄하는 방법은 무엇입니까? (0) | 2023.10.31 |