我使用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;
}
}
}
Service1.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;
}
}
}
拜托,有谁可以帮我解决这个问题? 提前谢谢。
答案 0 :(得分:0)
server = "localhost";
需要设置为真实服务器位置,如果您已将服务托管在其他位置,则该位置不再是localhost。
答案 1 :(得分:0)
我遇到了类似的问题。然后我记得连接器(MySql * .dll)没有被复制到服务器中的bin文件夹。 &GT;: - P
注意:抱歉,我没有注意到发布日期,但是好吧......也许有人会觉得这个答案很有用(记得把连接器复制到服务器上,伙计们)。