我正在使用ajax发布一个post请求,该请求应返回一个partialview,但我总是在日志中遇到以下错误:
3
查看调试日志时,我发现它正在加载部分视图数据,但是我收到错误。
我在网上找不到关于-32 EPIPE错误的任何内容,有人可以帮我解释这个错误的含义吗?
调用Ajax
Connection id "0HL6PHMI6GKUP" communication error.
Microsoft.AspNetCore.Server.Kestrel.Internal.Networking.UvException: Error -32 EPIPE broken pipe
控制器
$( "#PostForm" ).submit(function( event ) {
//Ajax call
$.ajax({
type: 'POST',
url: "/url/path/CreateBox",
data: {
"id": $("#RackId").val(),
"Name": $("#Name").val()
},
success: function(result){
$("#modal").html(result);
}
});
});
版本
[HttpPost]
public async Task<IActionResult> CreateBox(int id, string Name)
{
//Get the info of the given ID
Rack rack = await this._rackAccess.GetByIdAsync(id);
if (rack == null)
{
return NotFound();
}
Box box = new Box();
box.Rack = rack;
if (!string.IsNullOrEmpty(Name))
{
box.Name = Name;
var result = await this._boxAccess.InsertAsync(box);
//Returns a list of boxes
return PartialView("Boxes", await this._boxAccess.ToRackListAsync(rack.ID));
}else{
//Returns form again
return PartialView("CreateBox", box);
}
}
答案 0 :(得分:0)
可能由于服务器端长时间处理, 通讯管道被加班机制打破了。
希望这有用。
答案 1 :(得分:0)
解决方案可以在github上找到我发布的问题以及: https://github.com/aspnet/KestrelHttpServer/issues/1978
在github上回答halter73:
&#34;通讯错误&#34;通常有ECONNRESET,EPIPE和ECANCELED品种。你通常选择哪一个取决于你正在运行的平台,但这三个平台通常意味着同样的事情:客户端不合理地关闭了连接。
我有理论为什么会这样。我认为页面可能会在xhr中重新加载导致xhr中止。这可以通过从jQuery提交回调中返回false来修复。
我接受了所有依赖项和你的jQuery片段,并演示了这个页面重新加载如何导致Linux上的EPIPE和Windows上的ECANCELED在https://github.com/halter73/EPIPE的示例repro中。它使用csproj而不是project.json,因为我没有一个支持project.json的旧CLI。