0

ループしてWebServiceに投稿しようとしているjson文字列のリストがあります。最初の 2 つを問題なくループし、3 回目の繰り返しで停止します (これは 14 行目で発生します)。エラーも何もありません。ただ停止しているようです。何か案は?

    private static void CacheGetDataUrl(Guid sessionGuid)
    {
        var tokens = Driver.GetDataPostValues();
        foreach (var token in tokens)
        {
            try
            {
                var buffer = Encoding.UTF8.GetBytes(token.Replace("session_identifier", sessionGuid.ToString()));
                var request = (HttpWebRequest)WebRequest.Create(GetDataUrl);
                request.Timeout = 1000000;
                request.Method = "POST";
                request.ContentType = "application/json; charset=utf-8";
                request.ContentLength = buffer.Length;
                using (var postData = request.GetRequestStream())
                {
                    postData.Write(buffer, 0, buffer.Length);
                    postData.Close();
                }
                Console.WriteLine("Response requested for URL {0}", GetDataUrl); 
                Log.Info(String.Format("Response requested for URL {0} using parameters \r\n{1}", GetDataUrl, token));
            }
            catch (Exception)
            {
                Console.WriteLine("Error occurred requesting response for URL {0} using parameters \r\n{1}", GetDataUrl, token);
                Log.Error(String.Format("Error occurred requesting response for URL {0} using parameters \r\n{1}", GetDataUrl, token));
            }
        }

    }
4

1 に答える 1

0

いくつかの新しいプロパティを使用してメソッドを変更し、受信後にリクエストを中止すると、問題が解決したようです。

    private static void CacheGetDataUrl(Guid sessionGuid)
    {
        var tokens = Driver.GetDataPostValues();
        foreach (var token in tokens)
        {
            try
            {
                var buffer = Encoding.UTF8.GetBytes(token.Replace("session_identifier", sessionGuid.ToString()));
                var request = (HttpWebRequest)WebRequest.Create(GetDataUrl);
                request.KeepAlive = false;
                request.Timeout = System.Threading.Timeout.Infinite;
                request.ProtocolVersion = HttpVersion.Version10;
                request.Method = "POST";
                request.ContentType = "application/json; charset=utf-8";
                request.ContentLength = buffer.Length;
                request.ServicePoint.ConnectionLimit = 250;
                using (var postData = request.GetRequestStream())
                {
                    postData.Write(buffer, 0, buffer.Length);
                    postData.Close();
                }

                request.Abort();

                Console.WriteLine("Response requested for URL {0}", GetDataUrl); 
                Log.Info(String.Format("Response requested for URL {0} using parameters \r\n{1}", GetDataUrl, token));
            }
            catch (Exception)
            {
                Console.WriteLine("Error occurred requesting response for URL {0} using parameters \r\n{1}", GetDataUrl, token);
                Log.Error(String.Format("Error occurred requesting response for URL {0} using parameters \r\n{1}", GetDataUrl, token));
            }
        }
    }
于 2013-07-09T15:23:35.807 に答える