c# - 多线程应用程序中第 4 个 HttpWebRequest 异常超时

标签 c# multithreading httpwebrequest tcpclient tcplistener

我有一个充当服务器的多线程控制台应用程序。每次新客户端连接到 TcpListener 时,服务器都会生成一个新线程:

//code copied from http://www.switchonthecode.com/tutorials/csharp-tutorial-simple-  threaded-tcp-server
//blocks until a client has connected to the server
TcpClient client = tcpListener.AcceptTcpClient();  
//create a thread to handle communication with connected client
Thread clientThread = new Thread(new ParameterizedThreadStart(HandleClientComm));
                clientThread.Start(client);

该线程使用以下代码发出多个 HttpWebRequests:

public static HttpWebResponse HttpGet(string pRequestURI, string pArgs)
{
    string requestURI = string.Format("{0}?{1}", pRequestURI, pArgs);
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURI);
    request.Method = "GET";
    request.ContentType = "application/x-www-form-urlencoded";
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    return response;
}

问题是,我在 FOURTH REQUEST 上超时。这真的很奇怪,我无法掌握它。该代码在单线程应用程序中工作得很好。我还确保使用以下方法关闭响应流:

response.Close();

requestURI 是正确的,因为我尝试将它复制并粘贴到我的浏览器中。实际上,无论第 4 个请求是什么(我尝试过不同的请求),我总是会超时。

我猜可能是线程限制的问题,但是我真的不知道怎么解决。任何建议将不胜感激。

谢谢。

最佳答案

经过大量的血汗和泪水,我设法解决了它。

这真的是一个愚蠢的错误,原来有一个地方我没有关闭请求

由于某些(未知)原因,这不会影响从 Web 应用程序发出的请求,但是,当从控制台应用程序发出请求时,会遇到超时问题。

感谢@arx 的帮助 - 非常感谢。

关于c# - 多线程应用程序中第 4 个 HttpWebRequest 异常超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685000/

相关文章:

javascript - 创建部分 View 以在索引页面中创建新内容

c# - 用于匹配日志文件中的 APK 文件名的正则表达式模式

C# 模拟 HID Clicker 蓝牙

c++ - 在 C++ 中,如何在 X 秒后重置类中的变量?

C - 使用多线程编程从命令行计算统计值

c# - Fiddler 对解码后的响应进行编码。我怎样才能在 vb.net 中做同样的事情?

c# - C# 7.0 中的表达式主体获取/设置访问器功能

java - 为什么Java的Thread.join()中会调用wait() for循环?

c# - 此流不支持查找操作。 HttpWeb响应

Silverlight HttpWebRequest 同步调用