Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 Windows azure-无法从传输连接读取数据:远程主机强制关闭了现有连接_C# 4.0_Azure_Azure Storage - Fatal编程技术网

C# 4.0 Windows azure-无法从传输连接读取数据:远程主机强制关闭了现有连接

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

我们在使用JsonTextReader读取数据时遇到以下异常

无法从传输连接读取数据:远程主机强制关闭了现有连接。

JsonTextReader jsonReader-参数

 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"

感谢您记录这一点。我也犯了同样的错误,这很有帮助!