c# - HTTP 连接问题

标签 c# http connection persistence

我有一个大问题(抱歉我的英语不好)。 我直接附上我的代码:

public bool isServerOnline()
{
        Boolean ret = false;

        try
        {
            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(VPMacro.MacroUploader.SERVER_URL);
            req.Method = "HEAD";
            req.KeepAlive = false;
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
            if (resp.StatusCode == HttpStatusCode.OK)
            {
                // HTTP = 200 - Internet connection available, server online
                ret = true;
            }
            resp.Close();
            return ret;

        }
        catch (WebException we)
        {
            // Exception - connection not available
            Log.e("InternetUtils - isServerOnline - " + we.Status);
            return false;
        }
}

这个函数被很多线程调用并向Tomcat服务器发送HEAD请求。 因此,此方法为我执行的每个请求打开一个连接,并且在 10 分钟内我有 100 个连接处于事件状态。

如何解决这个问题?

最佳答案

您可以做 2 件事来正确管理连接:

首先:

初始化

HttpWebResponse resp;

在 try 语句之前。

然后在 finally 语句中结束

finally
{ 
    if (resp != null) 
    {
        resp.Close();
    }
}

第二个:

尝试使用“using()”子句管理您的连接

using(var a = new connection())
{
    //Your code
}

关于c# - HTTP 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6263372/

相关文章:

c# - 使用 LINQ 获取所有可能的不同三元组

AngularJS : TypeError: $http(. ..).success 不是 asp.net WebMethod 上的函数

http - 为什么要使用 webapi key

json - 未进行 SSL 连接尝试时,MongoDB 提示 SSL 握手

c++ - 为什么对于来自客户端的每条写入消息,此程序都会在 C/C++ 中创建一个新进程?

c# - 如何序列化包含结构列表的类的对象列表

c# - 标准输入未重定向 C#

c# - 如何禁用 Windows 平板电脑内置的网络摄像头

database - 在 Slick 3.0 中关闭数据库连接

python - 在 python 中处理多个嵌套函数所需的连接(例如使用 MySQLdb 的 mysql 服务器)的最佳方法是什么?