Web窗体响应状态代码在带控制器的ajax中始终为200

时间:2016-07-17 03:53:05

标签: asp.net ajax webforms controller http-status-codes

我的Web表单中有一个Ajax,它在Controller中调用ActionResault。问题是即使我将响应状态代码设置为任何东西但是200(404,401,...)Ajax将获得200响应所以在Ajax中不会有任何错误这里是我的Ajax和控制器:

$.ajax({

            beforeSend: function (jqXHR, settings) {
                xhr = jqXHR;  // To get the ajax XmlHttpRequest 
            },
            url: url + "Accounts/Login",
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(loginDataModel),

            success: function (result) {
                alert(result);
                if (result==0) {
                    document.location.href = '/Controlpanel/DashBoard.aspx';
                }

            }, error: function (jqXHR, exception) {

                var msg = '';

                if (jqXHR.status === 0) {
                    msg = 'عدم اتصال به اینترنت';
                } else if (jqXHR.status == 401) {
                    msg = 'اطلاعات وارد شده صحیح نمی باشد';
                } else if (jqXHR.status == 500) {
                    msg = 'خطایی در هنگام پردازش درخواست شما رخ داد.';
                } else if (exception === 'parsererror') {
                    msg = 'Requested JSON parse failed.';
                } else if (exception === 'timeout') {
                    msg = 'درخواست شما در بازه زمانی مورد نظر پردازش نشد';
                } else if (exception === 'abort') {
                    msg = 'Ajax request aborted.';
                } else {
                    msg = $.parseJSON(jqXHR.responseText).ErrorMessage;
                }
                $(".message").text(msg);

            },

        })

这是我的ActionResault

 public  HttpStatusCodeResult Login(LoginBindingProcessModel loginDataModel)
    {
        if (userRole != null)
        {
            HttpContext.GetOwinContext().Authentication.SignIn(new Microsoft.Owin.Security.AuthenticationProperties { IsPersistent = loginDataModel.isPersistent }, userRole);
        }
        if (objUserVerification == UserVerificationResult.SuccessfullyVerified)
        {
            Response.StatusCode = (int)System.Net.HttpStatusCode.OK;
            return Json(objUserVerification);
        }
        else
        {
            Response.StatusCode = (int)System.Net.HttpStatusCode.Unauthorized;
            return Json(objUserVerification);
        }
    }

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

原来问题是401。因为owin将页面重定向到未授权状态代码的默认地址。