我们已经开始收到由 Azure App Service 托管的 ASP.NET Web API 服务之一的错误。该服务允许将图像(作为序列化的字节数组)发布到我们的后端。该服务已经运行了一年以上,没有任何问题,但突然开始引发以下错误。
PostInspectionImagesTests引发异常: System.Net.Http.HttpRequestException:发送时发生错误 请求。 ---> System.Net.WebException:基础连接 已关闭:接收时发生意外错误。 -> System.IO.IOException:无法从传输读取数据 连接:远程强行关闭了现有连接 主办。 ---> System.Net.Sockets.SocketException:现有连接 被远程主机强行关闭
这是发布请求的代码。
private static async Task<HttpResponseMessage> PostData(string url, HttpContent content, string token)
{
RoutingTasksPostDeploymentTests.Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(RoutingTasksPostDeploymentTests.Subscriber, token);
return await RoutingTasksPostDeploymentTests.Client.PostAsync(new Uri(url), content);
}
我们使用 HttpClient 类的静态实例,因为它效率更高。
这是我用来创建测试图像的代码。
private static byte[] GetImage(int imageSize)
{
var randBytes = new byte[imageSize];
System.Security.Cryptography.RNGCryptoServiceProvider rand =
new System.Security.Cryptography.RNGCryptoServiceProvider();
rand.GetBytes(randBytes);
return randBytes;
}
我可以发布<1MB的图像,但是当我获得> 1MB时,我得到了错误。这项服务已经运作了一年多。那时该服务没有任何更改。
我的开发PC和本地TFS构建服务器均发生错误。我无法确定这是我们(使用网络/防火墙)还是Azure遇到的问题。我尝试在HTTP客户端上使用不同的超时,并在app.config中设置内容/请求大小的值。
这些值都没有影响。
<system.web>
<httpRuntime maxRequestLength="2097151" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
在Fiddler中查看请求时,出现 HTTP 504(网关超时)错误。