2010-02-28 4 views
39

Je ne comprends pas cette erreur, ne génère pas d'erreur dans "Test JsonResult()", je fais d'autres projets ASP.NET MVCASP.NET MVC 2 - avec réponse Failed ajax jquery

Merci

erreur:

System.InvalidOperationException: This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet. 

[InvalidOperationException: This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.] 
    System.Web.Mvc.JsonResult.ExecuteResult(ControllerContext context) +263733 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +10 
    System.Web.Mvc.<>c__DisplayClass14.<InvokeActionResultWithFilters>b__11() +20 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +251 
    System.Web.Mvc.<>c__DisplayClass16.<InvokeActionResultWithFilters>b__13() +19 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +178 
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +314 
    System.Web.Mvc.Controller.ExecuteCore() +105 
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +39 
    System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +7 
    System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__4() +34 
    System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 
    System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12 
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +59 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +44 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +7 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8678910 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 

C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace Tesis.Controllers 
{ 
    public class AnalysisSourceDataController : Controller 
    { 
     // 
     // GET: /AnalysisSourceData/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

     public JsonResult Test() 
     { 
      return Json(new { mymsg = "my msg" }); 
     } 
    } 
} 

javascript

<script type="text/javascript"> 
    $(function() { 
     $.getJSON("/AnalysisSourceData/Test", function(data) { 
      alert(data.mymsg); 
     }); 
    }); 
</script> 

Répondre

65

Qu'est-ce que vous ne comprenez pas? L'erreur pourrait difficilement être plus descriptive. Il est une caractéristique de sécurité pour empêcher JSON hijacking, vous pouvez le désactiver comme ça ..

return Json(new { mymsg = "my msg" }, JsonRequestBehavior.AllowGet); 

mais vous devez comprendre la implications.

+0

Je ne comprends pas que d'autres projets je n'ai pas besoin de ce paramètre. –

+6

Cela a été une fonctionnalité ajoutée avec ASP.NET MVC2 dans les projets MVCv1 dont vous n'avez pas besoin de l'ajouter. L'ajout de la fonctionnalité permet aux utilisateurs de s'arrêter et de réfléchir à ce qu'ils font avant d'exposer des données JSON via GET (qui a des applications parfaitement valides). –

+0

Merci, je manque de voir la documentation –