0

我使用 Visual Studio 在 C# 中创建了一个 Web 服务,它连接到我 PC 上的 MySql DB。在调试模式下效果很好,我可以使用 web 方法并执行查询。但是,由于我在主机上发布了 Web 服务,因此 Web 服务不再工作。这是代码,以防万一:

DbConnect.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySql.Data.MySqlClient;

namespace WebService1
{
public class DBConnect
{
    private MySqlConnection connection;
    private string server;
    private string database;
    private string uid;
    private string password;

    //Costruttore
    public DBConnect()
    {
        Initialize();
    }

    //Inizializzazione dei valori
    private void Initialize()
    {
        string connectionString;
        server = "localhost";
        database = "cartellodb";
        uid = "OCRUser";
        password = "admin";

        connectionString = "SERVER=" + server + ";" + "DATABASE=" + database + ";" +
                            "UID="  + uid + ";" + "PASSWORD=" + password + ";";

        connection = new MySqlConnection(connectionString);
    }

    private bool OpenConnection()
    {
        try
        {
            connection.Open();
            return true;
        }catch (MySqlException e) {
            switch (e.Number) { 
                case 0:
                    Console.WriteLine("Impossibile connettersi al server");
                    break;
                case 1045:
                    Console.WriteLine("Password/username non validi. Riprovare");
                    break;
            }
            return false;
        }
    }


    private bool CloseConnection()
    {
        try
        {
            connection.Close();
            return true;
        }catch (MySqlException e){
            Console.WriteLine(e.Message);
            return false;
        }
    }

    public string Insert(string lat, string lon, string text)
    {
        string query = "INSERT INTO Cartello VALUES (" + lat + "," + lon + ",'" + text + "');";

        //apertura connessione
        if (this.OpenConnection() == true)
        {
            //creazione ed istanziazione comando ed assegnazione della query e della connessione al comando
            MySqlCommand cmd = new MySqlCommand(query, connection);

            //esecuzione query
            cmd.ExecuteNonQuery();                     
        }
        this.CloseConnection();

        return "Inserimento dati completato con successo";
    }

    public string Test(string lat, string lon, string text)
    {
      string query = "SELECT * FROM Cartello WHERE latitude = " + lat + " AND longitude = " + lon + " AND testo = '" + text + "';";
      string result = "", queryResult = "";

      //apertura connessione 
      if(this.OpenConnection() == true)
      {
          //creazione ed istanziazione comando ed assegnazione della query e della connessione al comando
          MySqlCommand cmd = new MySqlCommand(query, connection);

          //creazione ed istanziazione del Data Reader che conterrà il risultato della query alla tabella
          MySqlDataReader dataReader = cmd.ExecuteReader();

          while(dataReader.Read())
              queryResult = dataReader.GetString(0);

          if(queryResult.CompareTo("") == 0)
              result = "NOTEXISTS";
          else
              result = "EXISTS";

          dataReader.Close();
          this.CloseConnection();
      }


      return result;
    }
    }

}

服务1.asmx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using MySql.Data.MySqlClient;

namespace WebService1
{
/// <summary>
/// Descrizione di riepilogo per Service1
/// </summary>
[WebService(Namespace = "http://ocrwebservice.somee.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// Per consentire la chiamata di questo servizio Web dallo script utilizzando ASP.NET AJAX, rimuovere il commento dalla riga seguente. 
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{

    [WebMethod]
    public string InsertIntoDB(string latitudine, string longitudine, string testo)
    {
        DBConnect dbObject = new DBConnect();
        string result;

        result = dbObject.Insert(latitudine, longitudine, testo);
        return result;
    }

    [WebMethod]
    public string Testing(string latitudine, string longitudine, string testo)
    {
        DBConnect dbObject = new DBConnect();
        string result;

        result = dbObject.Test(latitudine, longitudine, testo);
        return result;
    }
}
}

请问,谁能帮我解决这个问题?提前致谢。

4

2 回答 2

0

我遇到了类似的问题。然后我记得连接器(MySql*.dll)没有复制到服务器的 bin 文件夹中。>:-p

注意:对不起,我没有注意到发布日期,但是...也许有人会发现这个答案很有用(记住将连接器复制到服务器,伙计们)。

于 2014-09-25T21:04:48.867 回答
0

server = "localhost"; 需要设置为真实的服务器位置,如果您在其他地方托管服务,则不再是 localhost。

于 2013-04-26T15:50:22.640 回答