gpt4 book ai didi

c# - 将Json作为ActionResult返回不会让异常消息通过

转载 作者:行者123 更新时间:2023-12-03 09:00:49 25 4
gpt4 key购买 nike

因此,我页面上的链接导致某些代码中断。该代码引发Exception,这导致我的代码跳到 Controller 上的“Catch”块。 catch块如下所示:

catch (Exception e)
{
return Json(e.ToString());
}

发生的是,我在前端看到此错误:
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.

现在,如果我将上述return语句的行为更改为以下内容:
return Json(e.ToString(), JsonRequestBehavior.AllowGet);

在前端,我实际上收到了一个 pop 对话框,询问我是否要从本地主机下载Json项,而我得到的不仅仅是描述性错误。

这是怎么回事,我该如何解决?

最佳答案

需要使用AJAX调用返回JSON的操作。如果由于服务器返回JSON而仅在页面中放置指向此操作的链接,则浏览器将不知道如何处理。因此,例如,如果您使用的是jquery,则可以使用 $.getJSON() 方法调用此操作:

$(function() {
$.getJSON('<%= Url.Action("SomeAction") %>', { }, function(result) {
// do something with the result
alert(result);
});
});

在您描述的场景可能发生的时候,我可以想到另外两种情况:
  • 您已经AJAX化了一个指向此 Controller 操作的链接,但是您遇到了JavaScript错误,浏览器只是跟随该链接发送GET请求
  • 您已经AJAX化了指向此 Controller 操作的链接,但您忘记了通过从 .click() 回调返回false来取消默认操作,浏览器只是跟随该链接发送GET请求
  • 关于c# - 将Json作为ActionResult返回不会让异常消息通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4627565/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com