表单提交给Web Api Get(字符串id)被重复,直到::ERR_CONNECTION_RESET

Form submitted to Web Api Get(string id) is repeated until ::ERR_CONNECTION_RESET

本文关键字:直到 ERR RESET CONNECTION Api Web Get id 字符串 表单提交      更新时间:2023-09-26

我有一个Web Api网站,我试图调用控制器,并让它从服务器返回一个zip文件。我使用javascript向我的Web Api站点提交了一个表单:

document.getElementById("downloadSettings").submit();

控制器上的动作定义为:

public HttpResponseMessage Get(string id)

提交的表单有一个具有预期值(id)的输入。我提交表单,控制器接收调用,执行操作(作为byte[]获取请求的文件),并尝试像这样返回文件:

using (System.IO.MemoryStream ms = new System.IO.MemoryStream(fileContents))
{
    var response = Request.CreateResponse(HttpStatusCode.OK);
    response.Content = new StreamContent(ms);
    response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
    response.Content.Headers.ContentDisposition.FileName = "fileName.zip";       
    return response;
}

简单地运行代码结束在我收到一个错误- ERR_CONNECTION_RESET
如果我调试Get动作,我看到的是- Get函数完成的那一刻,一个新的线程到达函数的开始!没有从浏览器发出新的调用(网络选项卡显示没有新的调用),然而,该函数重复了几次,直到突然它没有,并且在客户端(浏览器)上我得到ERR_CONNECTION_RESET

怎么回事?我怎么修理它?我是否在尝试返回文件的方式上做错了什么?

显然,问题出在using([...])。一旦我把它从记忆流中删除,一切都很顺利!

我仍然想知道…那些重复电话是怎么回事?