Условие задачи:
Разработать службу WCF, работающую с базой данных торговой компании. База содержит две таблицы – Заказчики (Customers) и Заказы (Orders). Служба имеет методы, позволяющие извлекать всех заказчиков, а также заказы для выбранного заказчика.
Разработать клиентское приложение для службы WCF, в котором использовать методы службы для извлечения и представления на веб-форме информации о заказчиках и их заказах.
При запуске выходит ошибка с прикреплённой картинки.
Файл Service1.svc:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Data.SqlClient;
namespace WcfService1
{
// ПРИМЕЧАНИЕ. Команду "Переименовать" в меню "Рефакторинг" можно использовать для одновременного изменения имени класса "Service1" в коде, SVC-файле и файле конфигурации.
// ПРИМЕЧАНИЕ. Чтобы запустить клиент проверки WCF для тестирования службы, выберите элементы Service1.svc или Service1.svc.cs в обозревателе решений и начните отладку.
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
public List<Customer> GetCustomers()
{
List<Customer> list = new List<Customer>();
string str = System.Configuration.ConfigurationManager.ConnectionStrings["myDB"].ConnectionString;
using (SqlConnection con = new SqlConnection(str))
{
SqlCommand com = new SqlCommand("Select * from Customers", con);
con.Open();
SqlDataReader r = com.ExecuteReader();
while (r.Read())
{
Customer c = new Customer();
c.Id = (int)r["Id"];
c.Name = r["Name"].ToString();
c.Surame = r["Surname"].ToString();
c.YearOfBirth = (int)r["YearOfBirth"];
list.Add(c);
}
}
return list;
}
public List<Orders> GetOrders(int id)
{
List<Orders> list = new List<Orders>();
string str = System.Configuration.ConfigurationManager.ConnectionStrings["myDB"].ConnectionString;
using (SqlConnection con = new SqlConnection(str))
{
SqlCommand com = new SqlCommand("Select * from Orders where IdCust = @id", con);
com.Parameters.Add(new SqlParameter("@id", id));
con.Open();
SqlDataReader r = com.ExecuteReader();
while (r.Read())
{
Orders o = new Orders();
o.Id = (int)r["Id"];
o.Title = r["Title"].ToString();
o.IdCust = (int)r["IdCust"];
o.Price = (int)r["Price"];
o.Quant = (int)r["Quant"];
list.Add(o);
}
}
return list;
}
}
}
Код в методе Page_Load:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
GridView1.DataSource = client.GetCustomers();
GridView1.DataBind();
ServiceReference1.Service1Client order = new ServiceReference1.Service1Client();
GridView2.DataSource = order.GetOrders(int.Parse(GridView1.SelectedRow.Cells[1].Text));
GridView2.DataBind();
}
}
}