Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Post AJAX空json结果_C#_Jquery_.net_Ajax_Asp.net Mvc - Fatal编程技术网

C#Post AJAX空json结果

C#Post AJAX空json结果,c#,jquery,.net,ajax,asp.net-mvc,C#,Jquery,.net,Ajax,Asp.net Mvc,我发出一个POST ajax请求,以执行一个操作并返回一个结果,而无需重新加载页面。 为此,我使用JSON结果,问题是当我的操作“foo.dosyncation(id)”需要一段时间才能执行时,返回的消息为空。 例如,当引发异常时,会捕获异常,但其消息为null 当没有引发异常时也会发生同样的情况,“actionResult”为null。 如果我使用花费较少时间的操作,则返回的消息不会为null或空。 并且它不会在调试模式下发生,返回到我的页面的消息不是空的。 我想我忘了或者我做错了什么,但我不

我发出一个POST ajax请求,以执行一个操作并返回一个结果,而无需重新加载页面。
为此,我使用JSON结果,问题是当我的操作“foo.dosyncation(id)”需要一段时间才能执行时,返回的消息为空。
例如,当引发异常时,会捕获异常,但其消息为null

当没有引发异常时也会发生同样的情况,“actionResult”为null。
如果我使用花费较少时间的操作,则返回的消息不会为null或空。
并且它不会在调试模式下发生,返回到我的页面的消息不是空的。
我想我忘了或者我做错了什么,但我不知道是什么错了

[HttpPost]
公共JsonResult SomeAction(int id)
{
尝试
{
Foo-Foo=新的Foo();
var actionResult=foo.dosyncation(id);
返回Json(新的{ok=true,data=actionResult},JsonRequestBehavior.AllowGet);
}
捕获(例外情况除外)
{
返回Json(新的{data=ex==null?“null-ex”:(string.IsNullOrEmpty(ex.Message)?“此异常为空”:ex.Message)},JsonRequestBehavior.AllowGet);
}
}
我的AJAX查询:

$.ajax({
url:'@url.Action(“SomeAction”,“MyController”),
数据类型:“json”,
数据:{id:myID},
键入:“POST”,
成功:功能(响应){
if(response.ok){
//当一切都好的时候
console.log(response.data);
}否则{
//当抛出异常时
log(“发生错误:“+response.data”);
}
},
错误:函数(错误){
log(“发生错误:+error.responseText”);
}
});
下面是一个类似情况的示例: 我使用Sagnarrac示例,等待了10秒,问题就出现了。项目列表不再显示,并且console.log返回空字符串。
我将ASP MVC 5与.NET 4.8一起使用,我解决了我的问题,但我仍然有一些误解

我的方法返回一个与执行该方法的帐户系统相关的异常(这就是为什么在调试中它工作,而在web服务器上它不工作,因为使用的帐户不同)

奇怪的是,我的方法确实抛出了一个异常,我甚至设法捕获它并通过邮件发送。但是当控制器捕捉到异常时,她为空或null。 我会试着仔细看看这个问题


一旦我解决了这个问题,我尝试添加2分钟的超时,但没有出现任何问题(我认为在这个示例中,dotnetfiddle的配置与我的不同,这就是为什么没有出现异常).

听起来您在客户端的AJAX请求超过了请求超时时间-这是因为请求花费的时间太长,并且您没有请求正文(在您的示例中,代码将继续在服务器上运行)而停止的时候。这就是正在发生的事情吗?浏览器实际上发送了什么请求?若你们在控制器中设置了一个断点,它被击中了吗?这可能有助于弄清楚这一点:在post方法开始的行中设置一个断点,并观察id是否从前端提交谢谢你们的回答。我用断点试过,效果很好。我检索id,并将成功或异常消息返回给我的客户端。我会试着看看是否能找到关于ajax超时的线索。