HttpWebResponse在线程中导致内部服务器错误

时间:2015-10-16 01:20:48

标签: c# .net multithreading httpwebrequest

我已经构建了一个与远程服务器通信的程序。当我按顺序处理所有消息(在JSON对象中)时,它的行为正确。但是,当我在线程中构建它时,它返回远程服务器返回错误:(500)内部服务器错误。

远程服务器的配置会出现问题吗?从日志中我可以看到请求将在0.5秒内到达远程服务器。

以下是我与远程服务器通信的代码。

void Execute(){

    var httpWebRequest = (HttpWebRequest)WebRequest.Create(REMOTE_URL);
    httpWebRequest.ContentType = "application/json";
    httpWebRequest.Method = "POST";

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
    {                             
        streamWriter.Write(json);
        streamWriter.Close();
    }                        

    HttpWebResponse httpResponse = null;
    try
    {
        httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();       
    }
    catch (Exception exc)
    {
        // Internal Server Error exception caught here.     
    }

    if (httpResponse != null)
    {
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            string result = streamReader.ReadToEnd();
            // deserialize the result                                      
            streamReader.Close();
        }                
    }
    httpResponse.Close();

}

以下是我开始该主题的方法。

ObjectManager o = new ObjectManager()
Thread thread = new Thread(() => o.Execute(parameter));
thread.Start();

我认为这是线程或服务器配置中的问题。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

从我所看到的,线程没有任何问题。

错误500表示服务器上出现了问题。 可能存在许多可能性,一种是服务器(应用程序)无法处理并发请求。 您需要再次查看服务器上的错误,以便更好地了解该端的情况。