2016-07-17 74 views
0

我在我的Web窗體中調用ActionResault中的一個Ajax,問題是即使我將響應狀態代碼設置爲任何值但是200(404,401 ,...),阿賈克斯將獲得200響應,從而並且不會有任何錯誤在阿賈克斯這裏是我的Ajax和控制器:Web窗體響應狀態代碼在控制器中始終爲200 in 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); 
     } 
    } 

任何幫助將是讚賞

+0

該行爲結果代碼不應該編譯爲'HttpStatusCodeResult'和'JsonResult'不可分配,並且不能隱式地將其轉換爲另一個。 – Nkosi

+0

@Nkosi感謝您的幫助。所以您建議我更改ActionResault的返回類型? – nader

+0

我沒有提出任何建議。我說的是,你現在擁有的東西甚至不應該編譯成你所描述的行爲。您可以將操作的返回類型更改爲以ActionResult作爲開始的最低公共類型,然後查看爲什麼獲取所描述的行爲。 – Nkosi

回答

0

原來問題出在401上。因爲owin將該頁面重定向到未經授權的狀態碼上的默認地址。