C# - 阻塞GetRequestStream()

时间:2017-04-11 12:51:34

标签: c# solr httpwebrequest aerospike

我正在尝试从Aerospike获取一些数据到SOLR,但我对SOLR的Web请求有一点问题。我正在使用c#-s HttpWebRequest来处理多个线程上的Web请求。几批后,该过程被阻止 我发现代码在data = request.GetRequestStream();行停止,没有异常,没有消息,没有超时等待它什么也没做。 这是我的代码的一部分:

public static ConcurrentBag<String> docs = new ConcurrentBag<String>();
public static int count { get; set; }

<< data extraction into the "docs" container >>

if (count == 50)
{
    string dataStr = "{";
    string temp;
    lock (docs)
    {
        while (!docs.IsEmpty)
        {
            docs.TryTake(out temp);
            dataStr += temp;
        }
    }
    dataStr = dataStr.ToString().Remove(dataStr.ToString().Length - 1) + "}";
    count = 0;
    string SOLRInsert = "http://192.168.23.28:8985/solr/test/update";

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SOLRInsert);
    request.ContentType = "application/json";
    request.Method = "POST";
    byte[] dataBytes = Encoding.ASCII.GetBytes(dataStr);
    request.ContentLength = dataBytes.Length;
    request.Proxy = null;

    Stream data = null;

    try
    {
        data = request.GetRequestStream();
        sw.Start();
        data.Write(dataBytes, 0, dataBytes.Length);
        sw.Stop();
        //data.Close();
        data.Dispose();
    }
    catch (Exception ex)
    {
        Console.Write(key.userKey.ToString() + "->" + ex.ToString() + "\r\n");
        File.AppendAllText(@"import.log", key.userKey.ToString() + "->" + ex.ToString() + Environment.NewLine);
    }
    finally
    {
        if (data != null)
        {
            //data.Close();
            data.Dispose();
        }
    }
}

任何帮助都将不胜感激。

0 个答案:

没有答案