Hi I have the following code but I keep getting the error:
'JsonWcfService.GetVenues' does not implement interface member 'GetVenuesByLocation(string search)'.
I am fairly new to C and .Net so most of this is cut and paste to be honest.
Your help would be much appreciated.
IGetVenues.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;
namespace JsonWcfService
{
[ServiceContract]
public interface IGetVenues
{
[OperationContract]
//attribute for returning JSON format
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "json/Venues/search={search}")]
//method
List<Venue> GetAllVenuesMethod(string search);
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "json/Venues/location={search}")]
List<Venueloc> GetVenuesByLocation(string search);
}
}
GetVenues.svc.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Data.SqlClient;
namespace JsonWcfService
{
public class GetVenues : IGetVenues
{
public List<Venue> GetAllVenuesMethod(string search)
{
List<Venue> mylist = new List<Venue>();
using (SqlConnection conn = new SqlConnection("server=*****;database=******;Trusted_Connection=True;"))
{
conn.Open();
string cmdStr = String.Format("Select id,name,address1,town,postcode,lon,lat from venuesearch WHERE searchterm like @searchterm");
SqlCommand cmd = new SqlCommand(cmdStr, conn);
cmd.Parameters.Add(new SqlParameter("searchterm", "%" + Convert.ToString(search) + "%"));
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
while (rd.Read())
mylist.Add(new Venue(
rd.GetInt32(0),
//rd.GetString(1),
rd.IsDBNull(1) ? null : rd.GetString(1),
//rd.GetString(2),
rd.IsDBNull(2) ? null : rd.GetString(2),
//rd.GetString(3),
rd.IsDBNull(3) ? null : rd.GetString(3),
//rd.GetString(4)
rd.IsDBNull(4) ? null : rd.GetString(4),
//rd.GetString(4)
rd.IsDBNull(5) ? 0 : rd.GetDecimal(5),
//rd.GetString(4)
rd.IsDBNull(6) ? 0 : rd.GetDecimal(6)
));
}
conn.Close();
}
return mylist;
}
}
[DataContract]
public class Venue
{
[DataMember]
public Int32 id { get; set; }
[DataMember]
public string name { get; set; }
[DataMember]
public string address1 { get; set; }
[DataMember]
public string town { get; set; }
[DataMember]
public string postcode { get; set; }
[DataMember]
public Decimal lon { get; set; }
[DataMember]
public Decimal lat { get; set; }
public Venue(int venid, string venname, string venaddress1, string ventown, string venpostcode, decimal venlon, decimal venlat)
{
id = venid;
name = venname;
address1 = venaddress1;
town = ventown;
postcode = venpostcode;
lon = venlon;
lat = venlat;
}
public List<Venueloc> GetVenuesByLocation(string search)
{
List<Venueloc> mylist = new List<Venueloc>();
using (SqlConnection conn = new SqlConnection("server=***;database=******;Trusted_Connection=True;"))
{
conn.Open();
string cmdStr = String.Format("Select id,name,address1,town,postcode,lon,lat from venuesearch WHERE searchterm like @searchterm");
SqlCommand cmd = new SqlCommand(cmdStr, conn);
cmd.Parameters.Add(new SqlParameter("searchterm", "%" + Convert.ToString(search) + "%"));
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
while (rd.Read())
mylist.Add(new Venueloc(
rd.GetInt32(0),
//rd.GetString(1),
rd.IsDBNull(1) ? null : rd.GetString(1),
//rd.GetString(2),
rd.IsDBNull(2) ? null : rd.GetString(2),
//rd.GetString(3),
rd.IsDBNull(3) ? null : rd.GetString(3),
//rd.GetString(4)
rd.IsDBNull(4) ? null : rd.GetString(4),
//rd.GetString(4)
rd.IsDBNull(5) ? 0 : rd.GetDecimal(5),
//rd.GetString(4)
rd.IsDBNull(6) ? 0 : rd.GetDecimal(6)
));
}
conn.Close();
}
return mylist;
}
}
[DataContract]
public class Venueloc
{
[DataMember]
public Int32 id { get; set; }
[DataMember]
public string name { get; set; }
[DataMember]
public string address1 { get; set; }
[DataMember]
public string town { get; set; }
[DataMember]
public string postcode { get; set; }
[DataMember]
public Decimal lon { get; set; }
[DataMember]
public Decimal lat { get; set; }
public Venueloc(int venid, string venname, string venaddress1, string ventown, string venpostcode, decimal venlon, decimal venlat)
{
id = venid;
name = venname;
address1 = venaddress1;
town = ventown;
postcode = venpostcode;
lon = venlon;
lat = venlat;
}
}
}
The first function works but the second one doesn't.
See Question&Answers more detail:
os