2012-01-31 38 views
5

Tôi đang cố truy xuất giá trị từ cơ sở dữ liệu Microsoft SQL Server của mình. Nó là một "bit" rỗng.Tại sao JsonResult tạo ra 500 lỗi máy chủ nội bộ?

mã để lấy

[HttpGet] 
public JsonResult WishesVisit() 
{ 
    int firmaid = SessionExtensions.GetFirmaId(Session); 
    var firma = db.Firma.Where(x => x.firma_id == firmaid).FirstOrDefault(); 

    if (firma != null) 
    { 
     if (firma.oensker_besog != null) 
     { 
      if ((bool)firma.oensker_besog) 
      { 
       return Json("true"); 
      } 
      else 
      { 
       return Json("false"); 
      } 
     } 
    } 

    return Json("null"); 
} 

Và mã để lấy:

$.getJSON('WishesVisit', function (data) { 
    alert(data); 
}); 

Tại sao tôi nhận được một lỗi 500 máy chủ nội bộ?

Trình gỡ lỗi không phát hiện bất kỳ ngoại lệ nào.

Trả lời

16

Vấn đề rất có thể do ASP.NET MVC không cho phép yêu cầu JSON sử dụng GET theo mặc định. Bạn có thể thêm JsonRequestBehavior.AllowGet làm tham số thứ hai vào cuộc gọi Json của mình:

return Json("true", JsonRequestBehavior.AllowGet); 

Nếu không, bạn có thể cung cấp thông báo lỗi không?

+0

Bạn đã đúng :) – Kenci

+0

cảm ơn. Bất kỳ ý tưởng tại sao ASP.NET MVC không cho phép các yêu cầu JSON. –

+0

@eranotzap MVC đang bảo vệ bạn khỏi khai thác được gọi là [JSON Hijacking] (http://haacked.com/archive/2009/06/25/json-hijacking.aspx/) trong đó bạn có khả năng hiển thị dữ liệu nhạy cảm nếu GET yêu cầu trả về một mảng JSON. – OneManBand

Các vấn đề liên quan