Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webservice+;消费者c#错误服务器无法处理请求---&燃气轮机;连接已打开_C#_Web Services - Fatal编程技术网

Webservice+;消费者c#错误服务器无法处理请求---&燃气轮机;连接已打开

Webservice+;消费者c#错误服务器无法处理请求---&燃气轮机;连接已打开,c#,web-services,C#,Web Services,我有一个Web服务和一个消费者,Web服务有它的方法,从mysql数据库返回数据。 我打电话给消费者 WebService.Service1 Service = new WebService.Service1(); 开始时(不在methode中) 当消费者开始请求数据时,10分钟内将有20个请求,前15-18个请求工作正常,但最后几次返回错误 服务器无法处理请求。-->连接已断开 打开 我希望我提供了足够的信息像这样,我宁愿不张贴代码 这是Web服务的方法: p

我有一个Web服务和一个消费者,Web服务有它的方法,从mysql数据库返回数据。 我打电话给消费者

WebService.Service1 Service = new WebService.Service1();        
开始时(不在methode中) 当消费者开始请求数据时,10分钟内将有20个请求,前15-18个请求工作正常,但最后几次返回错误

服务器无法处理请求。-->连接已断开 打开

我希望我提供了足够的信息像这样,我宁愿不张贴代码

这是Web服务的方法:

        public string GetAnswer(string Question, string Option1, string Option2, string Option3, string Option4)
    {
        string connstring = "Server=Server;Port=3306;Database=DB;UID=User;password=pw;";
        MySqlConnection conn = new MySqlConnection(connstring);
        MySqlCommand command = conn.CreateCommand();

        command.CommandText = "SELECT * FROM `tbl` where `Question` = '" + Question + "' LIMIT 1";
        conn.Open();

        MySqlDataReader reader = command.ExecuteReader();
        if (reader.HasRows)
        {
            string TheAnswer = "";
            while (reader.Read())
            {
                string question = reader["Question"].ToString();
                string answer = reader["Answer"].ToString();
                if (Option1.Equals(answer))
                    TheAnswer = Option1;
                if (Option2.Equals(answer))
                    TheAnswer = Option2;
                if (Option3.Equals(answer))
                    TheAnswer = Option3;
                if (Option4.Equals(answer))
                    TheAnswer = Option4;
            }
            conn.Close();
            conn.Dispose();
            return TheAnswer;
        }
        else
        {
            MySqlCommand command2 = conn.CreateCommand();
            command.CommandText = "Insert Into `new` (`Question`, `Answer1`,`Answer2`,`Answer3`,`Answer4`) VALUES ('" + Question + "','" + Option1 + "','" + Option2 + "','" + Option3 + "', '" + Option4.Replace("~", " ") + "')";
            conn.Open();
            command.ExecuteNonQuery();

            conn.Close();
            conn.Dispose();
            return "Error: Question is unknown, saving the question to get it answered.";
        }
    }
您在else语句中有
conn.open()
,并且在此之前已经打开了连接。你可能应该考虑使用<代码>使用< /Cult>语句:

using (MySqlConnection conn = new MySqlConnection(connstring))
{
  using (MySqlCommand command2 = conn.CreateCommand())
  {
  }
}

web服务代码可能存在连接层问题。。您应该提供有关连接管理的信息。您从哪里获得异常?是在客户机调用web服务时,还是在服务器中传递给客户机的错误?如果是后者,则可能与您如何处理mysql db连接有关。@AndersAbel我在客户端调用methode时遇到异常,据我所知,这与我在关闭和处理会话问题时如何处理mysql连接无关?可能您的用户会话将因超时而关闭。@hkutluay我如何显示连接管理(没有Web服务的经验)是的,您完全正确,我现在看到了,这太愚蠢了!谢谢你注意到了!