Hi!
I tried to create a Silverlight-enabled WCF Service, but when i try to add it as a service reference to my project i always face an error.
Here's .cs file:
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;
namespace TODO.Web
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class TODO_db_Service
{
public List<Users> SelectUsersWhere(string where)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
MySql.Data.MySqlClient.MySqlDataReader myData;
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
List<Users> userlist = new List<Users>();
string commandQuery = "Select userName, password, emailAddress FROM Users WHERE " + where + ";";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = commandQuery;
myData = cmd.ExecuteReader();
myData.Read();
if (myData.HasRows)
{
do
{
string userName = myData.GetString("userName").ToString();
string password = myData.GetString("password").ToString();
string emailAddress = myData.GetString("emailAddress").ToString();
Users instance = new Users();
instance.usernameField = userName;
instance.passwordField = password;
instance.emailField = emailAddress;
userlist.Add(instance);
} while (myData.Read());
myData.Close();
conn.Close();
}
myData.Close();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
return userlist;
}
public void InsertIntoUsers(string userName, string password, string emailAddress)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
string insertQuery = "INSERT INTO Users (userName, password, emailAddress) VALUES ('"
+ userName + "', '" + password + "', '" + emailAddress + "');";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = insertQuery;
cmd.ExecuteNonQuery();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
}
public void InsertIntoProjects(string projectTitle, string description, string expirationDate, string assosiatedEmailAddress)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
string insertQuery;
if (expirationDate == "null")
{
insertQuery = "INSERT INTO Projects (projectTitle, description, expirationDate, assosiatedEmailAddress) VALUES ('"
+ projectTitle + "', '" + description + "', " + expirationDate + ", '" + assosiatedEmailAddress + "');";
}
else
{
insertQuery = "INSERT INTO Projects (projectTitle, description, expirationDate, assosiatedEmailAddress) VALUES ('"
+ projectTitle + "', '" + description + "', '" + expirationDate + "', '" + assosiatedEmailAddress + "');";
}
conn.ConnectionString = connectionString;
Console.WriteLine(insertQuery);
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = insertQuery;
cmd.ExecuteNonQuery();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
}
public void InsertIntoTasks(string taskName, string description, string expirationDate,
string assosiatedEmailAddress, int assosiatedTaskId)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
string insertQuery;
if (expirationDate == "null")
{
insertQuery = "INSERT INTO Tasks (taskName, description, expirationDate, assosiatedEmailAddress, assosiatedProjectId) VALUES ('"
+ taskName + "', '" + description + "', " + expirationDate + ", '"
+ assosiatedEmailAddress + "', '" + assosiatedTaskId + "');";
}
else
{
insertQuery = "INSERT INTO Tasks (taskName, description, expirationDate, assosiatedEmailAddress, assosiatedProjectId) VALUES ('"
+ taskName + "', '" + description + "', '" + expirationDate + "', '"
+ assosiatedEmailAddress + "', '" + assosiatedTaskId + "');";
}
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = insertQuery;
cmd.ExecuteNonQuery();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
}
public string RegisterUser(string userName, string password, string emailAddress)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
MySql.Data.MySqlClient.MySqlDataReader myData;
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
List<Users> userlist = new List<Users>();
string where = "WHERE emailAddress LIKE '" + emailAddress + "'";
string commandQuery = "Select userName, password, emailAddress FROM Users " + where + ";";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = commandQuery;
myData = cmd.ExecuteReader();
myData.Read();
if (myData.HasRows)
{
myData.Close();
conn.Close();
return "E-mail Address taken, choose a new one!";
}
else
{
myData.Close();
conn.Close();
InsertIntoUsers(userName, password, emailAddress);
return "Registration completed!";
}
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
conn.Close();
return "error";
}
public Users LoginUser(string emailAddress, string password)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
MySql.Data.MySqlClient.MySqlDataReader myData;
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
string where = "WHERE emailAddress LIKE '" + emailAddress + "' AND password LIKE '" + password + "'";
string commandQuery = "Select userName, password, emailAddress FROM Users " + where + ";";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = commandQuery;
myData = cmd.ExecuteReader();
myData.Read();
if (myData.HasRows)
{
string db_userName = myData.GetString("userName").ToString();
string db_password = myData.GetString("password").ToString();
string db_emailAddress = myData.GetString("emailAddress").ToString();
Users instance = new Users();
instance.usernameField = db_userName;
instance.passwordField = db_password;
instance.emailField = db_emailAddress;
myData.Close();
conn.Close();
return instance;
}
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
conn.Close();
return null;
}
public List<Tasks> SelectTasksWhere(string where)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
MySql.Data.MySqlClient.MySqlDataReader myData;
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
List<Tasks> list = new List<Tasks>();
string commandQuery = "Select id, taskName, description, expirationDate, assosiatedEmailAddress, assosiatedProjectId FROM Tasks WHERE "
+ where + ";";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = commandQuery;
myData = cmd.ExecuteReader();
myData.Read();
if (myData.HasRows)
{
do
{
int id = myData.GetInt32("id");
string taskName = myData.GetString("taskName").ToString();
string description = myData.GetString("description").ToString();
DateTime expirationDate;
if (!myData.IsDBNull(3)) { expirationDate = Convert.ToDateTime(myData.GetString("expirationDate").ToString()); }
else { expirationDate = DateTime.MaxValue; }
string assosiatedEmailAddress = myData.GetString("assosiatedEmailAddress").ToString();
int assosiatedProjectId = myData.GetInt32("assosiatedProjectId");
Tasks instance = new Tasks();
instance._id = id;
instance._taskName = taskName;
instance._description = description;
instance._expirationDate = expirationDate;
instance._assosiatedEmailAddress = assosiatedEmailAddress;
instance._assosiatedProjectId = assosiatedProjectId;
list.Add(instance);
} while (myData.Read());
}
myData.Close();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
return list;
}
public List<Projects> SelectProjectsWhere(string where)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
MySql.Data.MySqlClient.MySqlDataReader myData;
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
List<Projects> list = new List<Projects>();
string commandQuery = "Select id, projectTitle, description, expirationDate, assosiatedEmailAddress FROM Projects WHERE "
+ where + ";";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = commandQuery;
myData = cmd.ExecuteReader();
myData.Read();
if (myData.HasRows)
{
do
{
int id = myData.GetInt32("id");
string projectTitle = myData.GetString("projectTitle").ToString();
string description = myData.GetString("description").ToString();
DateTime expirationDate;
if (!myData.IsDBNull(3)) { expirationDate = Convert.ToDateTime(myData.GetString("expirationDate").ToString()); }
else { expirationDate = DateTime.MaxValue; }
string assosiatedEmailAddress = myData.GetString("assosiatedEmailAddress").ToString();
Projects instance = new Projects();
instance._id = id;
instance._projectTitle = projectTitle;
instance._description = description;
instance._expirationDate = expirationDate;
instance._assosiatedEmailAddress = assosiatedEmailAddress;
list.Add(instance);
} while (myData.Read());
}
myData.Close();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
return list;
}
public void DeleteProjectAndItsTasksWhereId(int Id)
{
string deleteQuery = "DELETE FROM Projects WHERE id = " + Id + ";";
string deleteTaskQuery = "DELETE FROM TASKS WHERE assosiatedProjectId = " + Id + ";";
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = deleteQuery;
cmd.ExecuteNonQuery();
cmd.CommandText = deleteTaskQuery;
cmd.ExecuteNonQuery();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
}
public void DeleteProjectUpdateItsTasksWhereId(int Id)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
string deleteQuery = "DELETE FROM Projects WHERE id = " + Id + ";";
string updateQuery = "UPDATE Tasks SET assosiatedProjectId = 1 WHERE assosiatedProjectId = " + Id + ";";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = deleteQuery;
cmd.ExecuteNonQuery();
cmd.CommandText = updateQuery;
cmd.ExecuteNonQuery();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
}
public void DeleteTaskWhere(int Id)
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
string connectionString = "server=localhost;User Id=root;Password=root;Persist Security Info=True;database=todo_db";
string deleteQuery = "DELETE FROM Tasks WHERE id = " + Id + ";";
conn.ConnectionString = connectionString;
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = deleteQuery;
cmd.ExecuteNonQuery();
conn.Close();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
Console.WriteLine("Error " + ex.Number + " has occurred: " + ex.Message);
}
}
}
public class Users
{
public string usernameField { get; set; }
public string passwordField { get; set; }
public string emailField { get; set; }
}
public class Projects
{
public int _id { get; set; }
public string _projectTitle { get; set; }
public string _description { get; set; }
public string _comment { get; set; }
public DateTime _expirationDate { get; set; }
public List<Tasks> _tasks = new List<Tasks>();
public string _assosiatedEmailAddress { get; set; }
}
public class Tasks
{
public int _id { get; set; }
public string _taskName { get; set; }
public string _description { get; set; }
public string _comment { get; set; }
public DateTime _expirationDate { get; set; }
public string _assosiatedEmailAddress { get; set; }
public int _assosiatedProjectId { get; set; }
}
}
I've set everythig public, changed the getters and setters, removed the constructors but still i get the error that:
There was an error downloading the metadata from the address. Please verify that you entered a valid address.
the details say:
Source Error:
An unhandled exception was generated during the execution of the current
web request. Information regarding the origin and location of the
exception can be identified using the exception stack trace below.
|
Stack Trace:
[InvalidOperationException: The type 'TODO.Web.TODO_db_Service', provided as the Service attribute value in the ServiceHost directive, or provided in the configuration element system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found.]
System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(String constructorString, Uri[] baseAddresses) +51902
System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath) +1440
System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +44
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +615
[ServiceActivationException: The service '/TODO_db_Service.svc' cannot be activated due to an exception during compilation. The exception message is: The type 'TODO.Web.TODO_db_Service', provided as the Service attribute value in the ServiceHost directive, or provided in the configuration element system.serviceModel/serviceHostingEnvironment/serviceActivations could not be found..]
System.Runtime.AsyncResult.End(IAsyncResult result) +679246
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +190
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, String routeServiceVirtualPath, Boolean flowContext, Boolean ensureWFService) +234
System.ServiceModel.Activation.HttpHandler.ProcessRequest(HttpContext context) +24
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
|
What is the problem?