C# 4.0 Windows azure-无法从传输连接读取数据:远程主机强制关闭了现有连接
我们在使用JsonTextReader读取数据时遇到以下异常 无法从传输连接读取数据:远程主机强制关闭了现有连接。 JsonTextReader jsonReader-参数C# 4.0 Windows azure-无法从传输连接读取数据:远程主机强制关闭了现有连接,c#-4.0,azure,azure-storage,C# 4.0,Azure,Azure Storage,我们在使用JsonTextReader读取数据时遇到以下异常 无法从传输连接读取数据:远程主机强制关闭了现有连接。 JsonTextReader jsonReader-参数 while (hasRecords(jsonReader, JsonToken.StartObject, null, null)) //Row { ... //it's ok to read this all into memory - it's just
while (hasRecords(jsonReader, JsonToken.StartObject, null, null)) //Row
{
...
//it's ok to read this all into memory - it's just one row's worth of data
JArray values = (JArray)JToken.ReadFrom(jsonReader);
此外,为了更清晰,还包括HttpPost实现的代码
HttpClientHandler handler = new HttpClientHandler() { Credentials = taskProfileInfo.Credential };
HttpClient httpClient = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(taskProfileInfo.CommandTimeout) };
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response;
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
request.Content = new StringContent(postBody, Encoding.UTF8, "application/json");
response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
response.EnsureSuccessStatusCode();
//using (var responseStream = await response.Content.ReadAsStreamAsync())
//{
// using (var reader = new StreamReader(responseStream))
// {
// responseFromAPI = reader.ReadToEnd();
// }
//}
return new JsonTextReader(new StreamReader(await response.Content.ReadAsStreamAsync()));
如果有人能帮助我们,我们将不胜感激
编辑:请注意,我们可以在本地调试它,并且工作正常。只有当我们在Azure云服务中以工作角色运行时才会出现问题。我最终解决了这个问题。只是为了结束这个(可能会帮助某人)—— 我们发现以下内部异常: {“请求被中止:请求被取消。”} 而且,这个问题的根本原因是我们确实将超时设置为小于实际读取(JsonTextReader)操作所需的时间。下面一行设置超时的代码:
HttpClient httpClient = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(taskProfileInfo.CommandTimeout) };
因此,修复方法是增加超时值,以便在读取数据时不会取消请求。我修复了在web配置中增加秒数的问题,这是一种替代方法:
sessionState timeout="50"
感谢您记录这一点。我也犯了同样的错误,这很有帮助!