异步文件上传响应永远不会回到客户端(或者需要更长的时间)

时间:2018-02-20 16:21:57

标签: c# asp.net .net asp.net-web-api

我们的应用程序存在问题,我们从来没有从一个非常简单的异步文件上传调用回复客户端(在这种情况下是Chrome)。它还使我们的服务器陷入困境长达2分钟。以下是我们的控制器方法:

public async Task<HttpResponseMessage> Post(string id, string fileName)
{


    string[] allowedAttachmentFileTypes = ConfigurationManager.AppSettings["AttachmentsSetting"].Split(',');
    string extension = Path.GetExtension(fileName);
    bool extensionAllowed = allowedAttachmentFileTypes.Any(allowedAttachmentFileType => allowedAttachmentFileType.ToLower().Trim() == extension.ToLower().Trim());

    if (extensionAllowed)
    {
        var fileResult = await Request.Content.ReadAsStreamAsync();
        //...do async database stuff with fileResult

        return Request.CreateResponse(HttpStatusCode.OK, result);
    }
    else
    {
        //this never makes it back to client
        var response = new HttpResponseMessage(HttpStatusCode.UnsupportedMediaType)
        {

            Content = new StringContent(ConfigurationManager.AppSettings["AttachmentsSetting"])
        };
        return response;
    }

}

我目前主要关注的是我们正在测试我们的系统中的无效文件扩展名,以便它会转到else子句并返回错误的响应。当我们在这里放置断点时,它会触及我们的控制器并最终在else子句中返回我们的返回,并按预期工作,但在Chrome中,它仍显示&#34;等待&#34;。

另一件事是它似乎依赖于我们发送给Controller的文件的大小,即使我们没有对文件做任何事情,除非扩展有效。 26,939KB的无效文件从未向我们提供服务器响应。虽然一个是17,432KB,但它仍然只花了一分钟。

我应该补充一点:这是更不一致的,但有时如果我们确实在更大的文件上有一个有效的文件扩展名,比如说26,939KB,我们会得到&#34;不再有HttpContext可用。&#34;尝试将文件复制到文件系统时

1 个答案:

答案 0 :(得分:0)

这最终成为防火墙问题。没有任何相关的代码。