我们的应用程序存在问题,我们从来没有从一个非常简单的异步文件上传调用回复客户端(在这种情况下是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;尝试将文件复制到文件系统时
答案 0 :(得分:0)
这最终成为防火墙问题。没有任何相关的代码。