Widziałem kilka wątków na ten temat i próbowałem wszystkich odpowiedzi (ASP.NET MVC JsonResult return 500)
Moje żądanie ajax ponownie zwraca błąd wewnętrzny o wartości 500. Jeśli debuguję, nigdy nie dostanę się do mojej akcji.
Oto moje wezwanie ajax:
$.ajax({
url: '@Url.Action("UpdateSortOrder", "FormItems")',
data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId },
type: 'POST',
success: function (data) {
console.log(data);
},
error: function (xhr, status, exception) {
console.log("Error: " + exception + ", Status: " + status);
}
});
I moje działanie:
[HttpPost]
public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId)
{
FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId);
return Json(updatedItem, JsonRequestBehavior.DenyGet);
}
Używanie konsoli chrom, są to nagłówki odpowiedzi z odpowiedzi:
HTTP/1.1 500 Wewnętrzny błąd serwera Cache-Control: prywatny Content-Type: text/html; charset = utf-8 Serwer: Microsoft-IIS/7.5 X-AspNetMvc-Version: 3.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Data: wtorek, 18 grudnia 2012 21 : 53: 41 GMT Długość zawartości: 17041
Logi serwera nie zawierają kodów podstanu. Masz pojęcie, co tu robię źle? Wolę używać POST zamiast GET.
Postać Dane są przedstawione jako:
itemToUpdateId: 18ac5399-342e-4a39-9da1-3281a89501df
newParentItemId: puste
newPreviousItemId: null
które jest poprawne.
Próbowałem ustawienie contentType na application/json i tradycyjny = true jak w tej kwestii: Sending ajax post to mvc with "application/json; charset=utf-8" returns error 500 from vs web developer server
sam błąd.
Czy próbowałeś oglądać surowy POST za pomocą Skrzypka, aby zobaczyć, co przechodzi przez przewód? –
możesz udostępnić sposób ustawiania tras? – kabaros
Trasa działa, teraz korzysta z domyślnej reguły trasy wypełnionej przez dodanie obszaru. Jeśli zmienię akcję, aby zwrócić widok i wpisać adres URL, działa, więc trasa jest poprawnie przetwarzana. – SventoryMang