ASP.NET MVC4获得正常工作返回500

时间:2012-11-21 19:15:39

标签: asp.net-mvc asp.net-mvc-routing

我是ASP.NET MVC的新手。我在VS2012中使用MVC4。我已经通过id获得了所有工作正常。当我在我的ajax代码中更改我的http请求从get到post时,它失败并出现500错误。

所以问题 1 - 如何调试此类问题 2 - 为什么会在这个特定情况下发生

我很确定这与我有什么关系,不了解我想要包含在路由代码中的内容

我认为代码很重要

//the controller method
            [System.Web.Mvc.HttpPost]
        public void PostPatientAppointment(PatientAppointment patientAppointment)
        {
            init();
            updatePatientAppointmentList();

            foreach (PatientAppointment existingPatientAppointment in patientAppointments)
            {
                if (patientAppointmentConflict(existingPatientAppointment, patientAppointment ))
                {
                    throw new HttpException(409, "Conflict");   
                }
            }

            //return patientAppointment;
        }

function onMouseUp(evt) {
    rect = null;
    mouseDown = false;

    //check for conflicting appointments
    //do the xhr request
    //cycle through appointments looking for conflicts
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                //open Dojo modal dialogue
                alert("will open dialogue");
            }
            else if( xmlhttp.status == 409)
            {
                alert("There is a conflict with that patient appointment");
            }
            alert("hmm - status was: " + xmlhttp.status );
        }
    }

    var patientAppointment = "{'identity':-1,'doctorId':-1,'patientId':-1,'patientName':null,'startTime':-1, 'endTime':-1,'location':null,'reason':null,'note':null,'recurrenceId':0,'appointmentTypeId':0,'patientShowedUp':false,'confirmed':false,'fullDayEvent':false}";
    xmlhttp.open("POST", "/api/PatientAppointment/", true);
    xmlhttp.send(patientAppointment);
}

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional}
        );
    }
}

1 个答案:

答案 0 :(得分:0)

使用浏览器调试器中的网络选项卡。返回500后,检查响应正文,它包含错误。

在这个特定的例子中,我看到你有一个void方法,所以它什么都不返回。如果这应该返回ActionResultJsonResult,那么你要么超过查询字符串的最大长度(这似乎不是这种情况),要么你不允许{{1您的HTTP GET回复。